不同窗函数的例子(Python)

126 篇文章 4 订阅
126 篇文章 54 订阅
import scipy.io as sio
import numpy as np
import matplotlib.pyplot as plt
import scipy
from scipy import signal
HA1 = sio.loadmat('H-A-1.mat')
HA1

{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Tue Oct 09 15:18:50 2018',
'__version__': '1.0',
'__globals__': [],
'Channel_1': array([[-0.00219944],
[-0.0018706 ],
[-0.00154175],
...,
[ 0.00963905],
[ 0.0093102 ],
[ 0.00898136]]),
'Channel_2': array([[4.18876708],
[4.20060302],
[4.20816487],
...,
[0.03700339],
[0.03634584],
[4.14010822]])}

Channel1 = HA1['Channel_1']
canal1 = Channel1.T[0]
t = np.linspace(0, 9, len(canal1))
plt.plot(t, canal1)


fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
fig.set_size_inches(18,9.5)
fig.suptitle('Comparison of window functions', fontsize = 15)
ax1.plot(t, canal1, alpha = 0.5)
ax1.plot(t, scipy.signal.windows.hann(len(canal1)) * canal1, 'tab:blue')
ax1.set_xlabel('Time')
ax1.set_ylabel('Amplitude')
ax1.set_title('Hann window')
ax2.plot(t, canal1, 'tab:orange', alpha = 0.5)
ax2.plot(t, scipy.signal.windows.hamming(len(canal1)) * canal1, 'tab:orange')
ax2.set_xlabel('Time')
ax2.set_ylabel('Amplitude')
ax2.set_title('Hamming window')
ax3.plot(t, canal1, 'tab:green', alpha = 0.5)
ax3.plot(t, scipy.signal.windows.flattop(len(canal1)) * canal1, 'tab:green')
ax3.set_xlabel('Time')
ax3.set_ylabel('Amplitude')
ax3.set_title('Flattop window')
ax4.plot(t, canal1, 'tab:red', alpha = 0.5)
ax4.plot(t, scipy.signal.windows.blackman(len(canal1)) * canal1, 'tab:red')
ax4.set_xlabel('Time')
ax4.set_ylabel('Amplitude')
知乎学术咨询:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1
ax4.set_title('Blackman window')

工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哥廷根数学学派

码字不易,且行且珍惜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值