MATLAB DFT幅频图绘制:以15Hz和40Hz正弦信号为例
MATLAB DFT幅频图绘制:以15Hz和40Hz正弦信号为例
本教程将演示如何使用MATLAB绘制信号的DFT(离散傅里叶变换)幅频图,并以一个包含15Hz和40Hz正弦信号的示例进行说明。
问题描述
已知信号由以下两部分组成:
- 频率为15Hz、幅值为0.5的正弦信号* 频率为40Hz、幅值为2的正弦信号
数据采样频率为100Hz。 请分别绘制该信号在以下两种情况下的DFT幅频图:
- N=128点DFT* N=1024点DFT
MATLAB代码matlab% 设置参数fs = 100; % 采样频率为100Hzf1 = 15; % 正弦信号1的频率为15Hzf2 = 40; % 正弦信号2的频率为40HzA1 = 0.5; % 正弦信号1的幅值为0.5A2 = 2; % 正弦信号2的幅值为2
% 生成时间序列t = 0:1/fs:1-1/fs; % 一秒钟内的时间序列,采样频率为100Hz
% 生成信号序列x = A1 * sin(2pif1t) + A2 * sin(2pif2t); % 信号由两个正弦信号组成
% 计算N=128点DFTN1 = 128;X1 = fft(x, N1); % 计算N=128点DFT
% 计算N=1024点DFTN2 = 1024;X2 = fft(x, N2); % 计算N=1024点DFT
% 计算频率轴frequencies1 = (0:N1-1) * fs / N1; % 对应N=128点DFT的频率轴frequencies2 = (0:N2-1) * fs / N2; % 对应N=1024点DFT的频率轴
% 绘制N=128点DFT的幅频图subplot(2, 1, 1);stem(frequencies1, abs(X1));title('N=128点DFT的幅频图');xlabel('频率 (Hz)');ylabel('幅值');
% 绘制N=1024点DFT的幅频图subplot(2, 1, 2);stem(frequencies2, abs(X2));title('N=1024点DFT的幅频图');xlabel('频率 (Hz)');ylabel('幅值');
结果分析
运行上述代码,您将获得包含两个子图的图像窗口。第一个子图显示N=128点DFT的幅频图,第二个子图显示N=1024点DFT的幅频图。
从图中可以看出,两个幅频图都清晰地显示了信号的两个频率分量(15Hz和40Hz)。 随着DFT点数N的增加,频率分辨率也随之提高,图谱能够更精确地反映信号的频率成分。
总结
本教程介绍了如何使用MATLAB绘制信号的DFT幅频图,并通过一个具体的示例演示了不同点数对DFT结果的影响。 您可以根据实际需求修改代码中的参数,并进一步探索DFT的更多特性。
原文地址: https://www.cveoy.top/t/topic/XQE 著作权归作者所有。请勿转载和采集!