自己写一个abs的函数
时间: 2024-04-09 07:28:17 浏览: 7
当然可以!以下是一个简单的示例代码,实现了一个绝对值函数:
```python
def my_abs(x):
if x < 0:
return -x
else:
return x
```
你可以调用这个函数来计算任意数的绝对值,例如:
```python
print(my_abs(-5)) # 输出:5
print(my_abs(10)) # 输出:10
print(my_abs(0)) # 输出:0
```
请注意,这只是一个简单的示例函数,实际上在 Python 中已经有内置的 `abs()` 函数可以直接使用。
相关问题
matlab自己写一个resample函数
以下是一个简单的resample函数的示例代码:
```matlab
function y=resample(x,p,q)
% x: 输入信号
% p: 原始采样频率(Hz)
% q: 目标采样频率(Hz)
L=length(x);
n=0:L-1;
ts=n/p;
tsq=n/q;
y=interp1(ts,x,tsq,'spline');
end
```
可以通过以下步骤来测试这个函数:
1. 创建一个原始信号x,例如一个正弦波:
```matlab
fs=1000; % 采样频率
f0=50; % 正弦波频率
t=0:1/fs:1-1/fs; % 时间序列
x=sin(2*pi*f0*t); % 正弦波
```
2. 使用resample函数将信号从1000 Hz 降采样到500 Hz:
```matlab
y=resample(x,fs,500);
```
3. 绘制原始信号和重采样后的信号的时域波形和频域谱:
```matlab
% 时域波形
subplot(2,1,1);
plot(t,x,t,y);
legend('原始信号','重采样信号');
xlabel('时间 (秒)');
ylabel('幅值');
xlim([0.4 0.5]);
% 频域谱
L=length(x);
X=fft(x)/L;
Y=fft(y)/L;
f=fs*(0:(L/2))/L;
subplot(2,1,2);
plot(f,2*abs(X(1:L/2+1)),f,2*abs(Y(1:L/2+1)));
legend('原始信号','重采样信号');
xlabel('频率 (Hz)');
ylabel('幅值');
xlim([0 100]);
```
这将绘制出一个包含原始信号和重采样信号的时域波形和频域谱的图形。可以观察到,重采样后的信号与原始信号在时域和频域上非常相似。
写一个自己的exp函数
当然!下面是一个简单的示例代码,实现了一个自定义的指数函数:
```python
def my_exp(x):
result = 1
term = 1
n = 1
while abs(term) > 1e-10: # 设置一个终止条件,这里使用了一个很小的阈值
term *= x / n
result += term
n += 1
return result
```
你可以调用这个函数来计算任意数的指数值,例如:
```python
print(my_exp(2)) # 输出:7.3890560989306495
print(my_exp(0.5)) # 输出:1.6487212707001282
print(my_exp(-1)) # 输出:0.36787944117144233
```
请注意,这只是一个简单的示例函数,并不考虑高效性和精度。在实际使用中,建议使用 Python 中已经内置的 `math.exp()` 函数。