首页 > 解决方案 > 具有去趋势和移位的 MATLAB FFT 波形图只有一个尖峰

问题描述

我有一些初学者的基本 Physionet 数据正在尝试应用 FFT,但我对我得到的结果有点困惑,并且认为它们不正确。我主要使用此示例fftshift 文档页面中的代码并进行了一些调整,但我不太确定我的代码或结果有什么问题。我附上了我的代码和我得到的结果的快照。

load aami3am.mat

Fs = 720;                    % Sampling frequency
T = 1/Fs;                    % Sample time
L = 60000;                   % Length of signal
t = (0:L-1)*T;               % Time vector


plot(t(1:43081),val(1:43081))
title('aami4b_h Signal')
xlabel('Seconds')
ylabel('ECG Amplitude')


NFFT = 2^nextpow2(L);
val = detrend(val); 
Y = fft(val,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(Y(1:NFFT/2+1))) 
title('FFT')


yY = fftshift(Y);
fshift = (-L/2:L/2-1)*(Fs/L);
powershift = abs(yY).^2/L;    
plot(fshift(1:L),powershift(1:L))
title('FFT Shifted')

原始信号

fft

fft 移位

我使用 43081 是因为 .mat 文件中有 43081 个值超过 60 秒的数据。

标签: matlabsignal-processingfft

解决方案


推荐阅读