微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 MATLAB 对时域信号执行 FFT

如何解决使用 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:

Figure 1

图 2:

Figure 2

图 3:

Figure 3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。