我試圖瞭解結果我得到用Matlab FFT,特別是與功能fftshiftMatlab的FFT - 結果不理解
予先計算一個簡單的信號的FFT(Y = COS(2 * PI * f_signal * t)和逆變換,試圖找到原始信號。
我比較結果有和沒有「零填充」通過執行FFT之前,在開始信號加入高100點。
這裏是代碼:
% Frequency input signal and time vector
f_signal=10;
nb_points = 100;
f_sampling=nb_points*f_signal;
step_time=1/f_sampling;
t=linspace(0,1/f_signal,nb_points);
%% Original signal with 100 points
y=cos(2*pi*f_signal*t);
%% Adding 100 more points for y
n_zero_padding=100;
y_f=padarray(y,[0 n_zero_padding],'post');
% Plot Input Signal
figure(1);
plot(y);
title('Input Signal');
% Perform Forward FFT
z=real(fft(y_f));
% Center FFT
z_centered=fftshift(z);
figure(2);
plot(z_centered);
title('FFT centrered with zero padding');
% Without centering
figure(3);
plot(z);
title('FFT with zero padding');
% Perform Inverse FFT
z_inv=ifft(z);
figure(4);
plot(z_inv);
title('Inverse FFT with zero padding');
% Inverse FFT with centered spectrum
z_inv_centered=ifft(z_centered);
figure(5);
plot(z_inv_centered);
title('Inverse FFT centered with zero padding');
我不理解圖5的結果(反變換與fftshift移位的頻譜)
這裏是所獲得的第一頻譜(不移動)(圖(3)):
這裏是第一移位譜fftshift(圖(2)):
和逆FT上述移位光譜(圖(5)):
我不理解後面的數字。如果我接受這個理論,用fftshift移動頻譜的事實導致獲得以f_sampling/2爲中心的兩個Dirac,更確切地說,在f_sampling/2-f_signal和f_sampling/2 + f_signal上。
所以我有這兩個狄拉克的總和,我做這個總和的逆FFT:所以我應該得到逆FFT 2餘弦頻率非常封閉:似乎我得到的數字(5)的產品兩個餘弦信號,但我不明白我的誤解在哪裏......
如果有人能解釋這個結果?
預先感謝您
這正是你所得到的。請參閱https://en.m.wikipedia.org/wiki/List_of_trigonometric_identities#Product-to-sum_and_sum-to-product_identities。 – 2015-04-05 22:44:45
好的謝謝,我忘了這個公式。我繪製了:t = linspace(0,2/f_signal-2 /(f_signal * 2 * nb_points),2 * nb_points); y2 = 0.5 * cos(2 * pi *(f_sampling/2-f_signal)* t); y2 = 0.5 * cos(2 * pi *(f_sampling/2 + f_signal)* t); sum_y = y1 + y1; 圖(6); plot(sum_y);但是就上面的圖5而言,我錯過了這個情節的一個因子2。你知道它來自哪裏?問候 – youpilat13 2015-04-06 00:12:57