这部分取自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/