这部分取自Matlab fft文档:

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

x = sin(2*pi*1*t);          % 1 Hz sinus

plot(real(ifft(abs(fft(x))))); % fft then ifft

% Fs = 30, L = 60 / 90 / 120 ... : ok
% Fs = 20, L = 60 / 80 / 100 ... : ok
% Fs = 30, L = 50 / 70 / 80 ... : not ok

在我看来,只要信号长度是采样频率的倍数,就可以正确地重建正弦曲线(除了某些偏移),例如这里Fs = 30, L = 60:

但是,例如,如果Fs = 30, L = 80(不是倍数),则结果看起来很奇怪:

这种行为正确吗?为什么会发生这种情况,我该如何避免呢?只是丢掉信号的一部分,使长度“适合”采样频率?

最佳答案

在ifft中使用abs(fft())时,仅使用信号的幅度,并丢弃所需的相位信息。

使用整个信号(去除的abs):

plot(real(ifft(fft(x)))); % fft then ifft

关于matlab - fft/ifft : Sampling Frequency and Length of Signal,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10983000/

10-09 02:59