python写一个类似matlab中的smooth平滑函数
时间: 2023-06-03 18:02:42 浏览: 373
平滑算法函数matlab
可以使用numpy库中的convolve函数来实现平滑滤波,代码如下:
```python
import numpy as np
def smooth(x, window_len=11, window='hanning'):
if window_len < 3:
return x
if not window in ['flat', 'hanning', 'hamming', 'bartlett', 'blackman']:
return x
s = np.r_[x[window_len-1:0:-1], x, x[-2:-window_len-1:-1]]
if window == 'flat':
w = np.ones(window_len, 'd')
else:
w = eval('np.'+window+'(window_len)')
y = np.convolve(w/w.sum(), s, mode='valid')
return y[(window_len//2):-(window_len//2)]
```
其中,参数x是输入的序列,window_len是窗口长度,默认为11,window是选择平滑窗口的类型,默认为'hanning'窗口。可以按照以下方式进行调用:
```python
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x) + np.random.random(100) * 0.5
ysmooth = smooth(y)
plt.plot(x, y)
plt.plot(x, ysmooth)
plt.show()
```
该代码可以实现对sin函数加噪声后的平滑滤波,并绘制出原始信号和平滑后的信号。
阅读全文