如何解决使用 MATLAB 对时域信号执行 FFT
我一直在尝试对从另一个软件获得的时域信号执行信号处理操作 (FFT)。但是,当我使用以下代码时,我总是得到错误的答案(图 1)。信号采样频率为1600。
%Healthy engine IAS
DATAH=xlsread('IASH_5seconds_1500rpm_FS1600.xlsx');
xh=DATAH(:,1);
yh=DATAH(:,2);
plot(xh,yh);
hold on;
legend('a','b')
%% performing fft
Fs=1600;
L=length(yh);
nfft = 2^nextpow2(L);
X = fft(yh,nfft)/L;
f = Fs*linspace(0,1,nfft);
plot(f,2*abs(X))
我尝试使用 Amesime 软件获取其频谱,结果正确(见图 2)。但是,我想用 MATLAB 来做到这一点。 我不知道我的错误在哪里。当我只是改变信号并且代码完美运行时,我的问题对我来说变得更奇怪了。所以,我认为我的信号有问题。我的信号是否有问题(您可以在图 3 中看到信号)?
图 1:
图 2:
图 3:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。