|
1鱼币
添加代码,使代码中的信号y添加合适的窗函数,进行信号修正。
- import numpy as np
- import matplotlib.pyplot as plt
- from matplotlib.pylab import mpl
- mpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
- mpl.rcParams['axes.unicode_minus'] = False # 显示负号
- # 生成正弦信号 #
- fs = 1000 # 定义采样率
- t = np.linspace(0,1,fs) # 定义时间序列
- y = np.sin(2*np.pi*20*t) + 2*np.sin(2*np.pi*40*t) # 定义正弦信号
- # 进行FFT分析 #
- Y = np.fft.fft(y) # FFT变换
- normalization_y = 2*np.abs(Y)/fs # 归一化,能量集中处理
- freqs = np.fft.fftfreq(len(y), 1/fs) # 自动生成变换后的频率序列
- # 绘制输入波形与频谱 #
- fig,axes = plt.subplots() # 添加画布
- plt.subplot(211)
- plt.plot(t[0:100],y[0:100]) # 取前一百采样频率点
- plt.title('输入波形(部分)')
- plt.xlabel('时间(s)')
- plt.ylabel('振幅')
- plt.subplot(212)
- plt.plot(freqs[range(int(fs/2))], normalization_y[range(int(fs/2))]) # 显示单边频率
- plt.title('单边频谱')
- plt.xlabel('频率 (Hz)')
- plt.ylabel('振幅')
- plt.xlim(0,100)
- fig.tight_layout() #自动调整布局,使标题不干涉
- plt.show()
复制代码
window = np.array([0.5 - 0.5 * np.cos(2 * np.pi * n / (1000 - 1)) for n in range(1000)])
y = window * y 666
|
最佳答案
查看完整内容
window = np.array([0.5 - 0.5 * np.cos(2 * np.pi * n / (1000 - 1)) for n in range(1000)])
y = window * y 666
|