Tob*_*old 5 matlab signal-processing fft ifft
这部分来自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
Run Code Online (Sandbox Code Playgroud)
在我看来,只要信号的长度是采样频率的倍数,正弦曲线就会被正确地重建(除了一些移位),例如Fs = 30, L = 60:

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

这种行为是否正确?为什么会发生这种情况,我该如何避免这种情况?只是扔掉信号的某些部分,使长度"适合"采样频率?
当你在ifft中使用abs(fft())时,你只使用信号的幅度并丢弃所需的相位信息.
使用整个信号(删除abs):
plot(real(ifft(fft(x)))); % fft then ifft
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18632 次 |
| 最近记录: |