汉宁窗和海明窗函数的时域图和频谱图的MATLAB程序代码
时间: 2023-07-23 10:18:01 浏览: 144
以下是使用MATLAB语言实现汉宁窗和海明窗函数的时域图和频谱图的代码示例:
```matlab
% 定义汉宁窗函数
function w = hanning_window(N)
w = 0.5 - 0.5 * cos(2 * pi / N * (0:N-1));
end
% 定义海明窗函数
function w = hamming_window(N)
w = 0.54 - 0.46 * cos(2 * pi / N * (0:N-1));
end
% 定义信号
N = 1000;
x = sin(2 * pi * 100 * (0:N-1) / N);
% 计算汉宁窗和海明窗函数加权后的信号
hanning_w = hanning_window(N);
hanning_x = x .* hanning_w;
hamming_w = hamming_window(N);
hamming_x = x .* hamming_w;
% 绘制时域图
figure;
subplot(2, 2, 1);
plot(x);
title('Original Signal');
subplot(2, 2, 2);
plot(hanning_x);
title('Hanning Windowed Signal');
subplot(2, 2, 3);
plot(hamming_x);
title('Hamming Windowed Signal');
% 绘制频谱图
X = fft(x);
Hanning_X = fft(hanning_x);
Hamming_X = fft(hamming_x);
freq = linspace(0, 1, N);
subplot(2, 2, 4);
plot(freq, abs(X), 'DisplayName', 'Original Signal');
hold on;
plot(freq, abs(Hanning_X), 'DisplayName', 'Hanning Windowed Signal');
plot(freq, abs(Hamming_X), 'DisplayName', 'Hamming Windowed Signal');
hold off;
legend;
title('Frequency Spectrum');
```
运行代码后,可以得到汉宁窗和海明窗函数的时域图和频谱图。需要注意的是,通过调整信号的频率、窗函数的参数等,可以获得不同形状的频谱图。
阅读全文