f = linspace(-fs/2, fs/2, 256); figure(); subplot(3, 1, 1); stem(n1, xn1); title('16-point FFT'); xlabel('时间样本'); ylabel('幅值'); subplot(3, 1, 2); stem(n2, xn2); title('256-point FFT'); xlabel('时间样本'); ylabel('幅值'); subplot(3, 1, 3); plot(f, abs(fftshift(X1))); hold on; plot(f, abs(fftshift(X2))); title('振幅谱'); xlabel('频率 (Hz)'); ylabel('数值'); legend('16-point FFT', '256-point FFT');
时间: 2024-01-29 07:03:49 浏览: 69
set_up_a_new_matrix.rar_4 3 2 1_生成矩阵_矩阵
这段代码是在 MATLAB 环境下对两个信号 xn1 和 xn2 进行不同长度的 FFT 后进行画图展示。
第一行代码 `f = linspace(-fs/2, fs/2, 256)` 是生成一个长度为 256 的频率向量,其中 fs 是信号的采样率。
接下来的代码使用 `subplot` 函数将画布分为 3 行 1 列的子图,并在第一个子图中绘制了 xn1 的时域波形,第二个子图中绘制了 xn2 的时域波形。
在第三个子图中,通过 `abs(fftshift(X1))` 和 `abs(fftshift(X2))` 分别绘制了 X1 和 X2 的振幅谱,其中 `fftshift` 函数将 FFT 结果的直流分量移到频谱的中心位置。
最后,代码使用 `legend` 函数添加了图例,方便对比两个不同长度的 FFT 结果。
阅读全文