MATLAB FFT 代码优化与错误分析
这串代码计算了信号的 FFT,并绘制了其时间域波形和频率响应。代码没有明显的错误,但需要注意以下几点:
-
在计算 FFT 时,频率序列应该包括负频率部分,即'k=-K/2+1:K/2',而不是'k=floor(0:(K-0.5))'。
-
在绘制频率响应时,应该使用'semilogy'函数或者'plot'函数的'log'选项,以便更清晰地显示幅度响应的变化。
以下是对代码的优化建议:
N = 3; % 信号长度
x = [1, 1, 1]; % 信号序列
nx = 0:N-1; % 信号的时间序列
K = 1000; % FFT 点数
dw = 2*pi/K; % 频率分辨率
% 计算 FFT
k = -K/2+1:K/2; % 频率序列
X = x*exp(-j*dw*nx'*k); % 计算频域波形
% 绘图
figure
subplot(2,1,1)
stem(nx,x);grid
xlabel('时间');
ylabel('幅度');
title('时间域波形');
subplot(2,1,2)
semilogy(k*dw,abs(X));grid % 使用 semilogy 函数
xlabel('频率(弧度)');
ylabel('幅度');
title('系统的幅频响应');
通过这些修改,可以更准确地计算和绘制 FFT 信号的频率响应,并提供更清晰的频率变化信息。
原文地址: https://www.cveoy.top/t/topic/ojMU 著作权归作者所有。请勿转载和采集!