python写一套类似matlab的smooth平滑函数用于plt.contour画图
时间: 2023-06-02 21:03:18 浏览: 102
好的,我可以帮你解答这个问题。您可以使用numpy库中的convolve函数实现类似于matlab的smooth平滑函数。以下是一个简单的实现:
```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']:
raise ValueError("Window is not one of 'flat', 'hanning', 'hamming', 'bartlett', 'blackman'")
s = np.r_[x[window_len-1:0:-1],x,x[-2:-window_len-1:-1]]
if window == 'flat': # moving average
w = np.ones(window_len,'d')
else:
w = eval('np.'+window+'(window_len)')
y = np.convolve(w/w.sum(), s, mode='valid')
return y[int(window_len/2):-int(window_len/2)]
```
在这个函数中,x是要平滑的数据,window_len是平滑窗口的长度,窗口函数可以是'flat','hanning','hamming','bartlett'或'blackman'之一。
使用smooth函数可以平滑数据,然后使用plt.contour函数将平滑数据绘制成等高线图。
阅读全文