汉宁窗和海明窗函数的时域图和频谱图程序代码
时间: 2023-07-23 21:18:01 浏览: 115
可直接运行 MATLAB信号处理 频谱分析加汉宁窗函数 源代码程序.rar
5星 · 资源好评率100%
以下是使用Python语言实现汉宁窗和海明窗函数的时域图和频谱图的代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义汉宁窗函数
def hanning_window(N):
return 0.5 - 0.5 * np.cos(2 * np.pi / N * np.arange(N))
# 定义海明窗函数
def hamming_window(N):
return 0.54 - 0.46 * np.cos(2 * np.pi / N * np.arange(N))
# 定义信号
N = 1000
x = np.sin(2 * np.pi * 100 * np.arange(N) / N)
# 计算汉宁窗和海明窗函数加权后的信号
hanning_x = x * hanning_window(N)
hamming_x = x * hamming_window(N)
# 绘制时域图
plt.figure(figsize=(10, 6))
plt.subplot(2, 2, 1)
plt.plot(x)
plt.title('Original Signal')
plt.subplot(2, 2, 2)
plt.plot(hanning_x)
plt.title('Hanning Windowed Signal')
plt.subplot(2, 2, 3)
plt.plot(hamming_x)
plt.title('Hamming Windowed Signal')
# 绘制频谱图
X = np.fft.fft(x)
Hanning_X = np.fft.fft(hanning_x)
Hamming_X = np.fft.fft(hamming_x)
freq = np.fft.fftfreq(N)
plt.subplot(2, 2, 4)
plt.plot(freq, np.abs(X), label='Original Signal')
plt.plot(freq, np.abs(Hanning_X), label='Hanning Windowed Signal')
plt.plot(freq, np.abs(Hamming_X), label='Hamming Windowed Signal')
plt.legend()
plt.title('Frequency Spectrum')
plt.show()
```
运行代码后,可以得到汉宁窗和海明窗函数的时域图和频谱图。需要注意的是,通过调整信号的频率、窗函数的参数等,可以获得不同形状的频谱图。
阅读全文