MATLAB對音訊進行FFT和IFFT變換後如何恢復相位資訊?

時間 2021-05-29 22:49:57

1樓:Sheaping

你的意思是根據音訊實訊號求其相位資訊嗎?這樣的話,很好操作啊。加入的音訊實訊號是 ,

FFT之後的復訊號為

,其中 和 分別為FFT復訊號 的實部與虛部。那麼 的模長為

相位資訊為

下面給出乙個MATLAB的例子:

% Generating a time signal.

n = 501;

dt = 2e-2;

t = (0: n-1) * dt;

fs = 1 / dt;

f = (0: n-1) * fs / (n-1);

s = sin(t.^2);

% FFT of signal 's'.

fd = fft(s);

% Modulo of fft.

amp = abs(fd);

% Phase of fft.

pha = atan2(imag(fd), real(fd));

figure(1);

subplot(2, 2, [1, 2])

plot(t, s, 'linewidth', 1, 'color', 'k');

grid();

grid minor;

xlabel('Time (s)')

ylabel('Amplitude')

title('Signal in time domain');

hold on;

subplot(2, 2, 3);

plot(f, amp, 'linewidth', 1, 'color', 'r');

grid();

grid minor;

xlim([0, fs/5]);

xlabel('Frequency (Hz)');

ylabel('Modulo');

title('Modulo');

hold on;

subplot(2, 2, 4);

plot(f, pha, 'linewidth', 1, 'color', 'b');

grid();

grid minor;

xlim([0, fs/5]);

xlabel('Frequency (Hz)');

ylabel('Phase');

title('Phase');

2樓:太空員外

音訊FFT變換後是復訊號,本身是有相位資訊的。

一般只選取變換後前N/2(2:N/2+1)長度的訊號進行處理。因為是在複數域,所以具體演算法怎麼設計要看你的需求。

處理完之後只需要把N/2訊號反轉(去掉並且去掉取反後第乙個數字),並且把每個數的虛數項反過來(+1i -> -1i;-3i -> 3i),然後IFFT就可以了.

如何對音訊訊號進行傅利葉處理?

華煜明 第一次回答知乎問題,也不知道是哪一年提的。哈哈 取樣得到離散訊號後,並不需要再回到模擬域啊。如果一定要得到連續的訊號,可以插值,一般來說用sinc插值方法可以。計算頻域的表示只要嚴格按照離散傅利葉變換公式來就行啊。 積木 目前只學過傅利葉變換 傅利葉級數 訊號與系統,但有一點心得,希望可以幫...

父母對孩子進行節儉教育,對孩子性格和未來有什麼影響?

風林 只要父母以身作則,不用在口頭上過於宣揚,孩子自然會看到,我平時對孩子幾乎很少說要節儉,但是平時我比較謹慎花錢,他也不喜歡亂花錢,不過說真的,我倒是不希望他過於節儉,個人一點微見,分享一下 依舊如新 有兩個大方面的影響 一,在做事業過程中或工作中,會格局小。格局小就是只注重眼前利益,不能放眼全域...

半導體材料和MOSFET的學習,對元件進行了c v測定和c f測定,結果怎麼看?

笨虎是只貓 想要請教實際操作時的判斷方法。大家只通過這兩個圖能了解到什麼?有哪些是可以通過計算的得到的?有哪些是可以以此為根據推斷情況的?請賜教!在已知相對介電常數的情況下 比如說這個C V測定圖的上半部分的圖,我可以根據注入到飽和的電容差,來計算半導體層的膜厚。可以根據曲線的平滑程度,來判斷注入的...