使用 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 (将#修改为@)