1. 程式人生 > 實用技巧 >傅立葉變換相關

傅立葉變換相關

傅立葉變換相關

目錄

1.連續傅立葉變換

1.1 傅立葉變換的引出

\[F\left( {j\omega } \right) = \int_{ - \infty }^{ + \infty } {f\left( t \right)} \cdot {e^{ - j\omega t}}dt傅立葉正變換 \]

\[f\left( t \right)=\frac{1}{2\pi }\int_{-\infty }^{+\infty }{F\left( j\omega \right)}\cdot {{e}^{j\omega t}}d\omega 傅立葉逆變換 \]

\[F\left( {j\omega } \right) = \left| {F\left( {j\omega } \right)} \right| \cdot {e^{j\varphi \left( \omega \right)}}頻譜密度函式 \]

\(其中\left| {F\left( {j\omega } \right)} \right|與\omega 構成的為幅度譜,{\varphi \left( \omega \right)}與\omega 構成的為相位譜。\)

  • 週期訊號:

    \[{{f}_{T}}\left( t \right)=\sum\limits_{n=-\infty }^{+\infty }{{{F}_{n}}\cdot {{e}^{jn{{\omega }_{0}}t}}} \]

  • 非週期訊號

\[f\left( t \right)=\frac{1}{2\pi }\int_{-\infty }^{\infty }{F\left( j\omega \right)}\cdot {{e}^{jwt}}d\omega \]

1.2 傅立葉變換的性質

  1. 唯一性(統一的是時域為訊號或波形,頻域是函式)

    頻譜函式與時間訊號一一對應,不存在一對多或多對一。

  2. 線性

\[a{f_1}\left( t \right) + b{f_2}\left( t \right)\overset {} \longleftrightarrow a{F_1}\left( {j\omega } \right) + b{F_2}\left( {j\omega } \right) \]

其中a與b是常數。

  1. 奇偶性

    奇訊號的頻譜是奇函式,偶訊號的頻譜是偶函式。

  2. 共軛特性

\[f\left( t \right)\overset {} \longleftrightarrow F\left( {j\omega } \right)\\{f^ * }\left( t \right)\overset {} \longleftrightarrow {F^ * }\left( { - j\omega } \right) \]

\(當f\left( t \right)為實訊號,它的頻譜是共軛對稱的,或者總的來說,任何訊號的頻譜的實部是偶函式,虛部為奇函式。\)

  1. 對稱特性

\[f\left( t \right)\overset {} \longleftrightarrow F\left( {j\omega } \right)\\F\left( {jt} \right)\overset {} \longleftrightarrow 2\pi \cdot f( - \omega ) \]

\(其中,用 t = - \omega , \omega = t 互相進行替換,再根據時頻的關係可以推出以上公式。\)

  1. 時域展縮特性

\[f\left( {at} \right)\overset {} \longleftrightarrow \frac{1}{{\left| a \right|}}F\left( {j\frac{\omega }{a}} \right) \]

  • \(當{\left| a \right|}大與1時,時域壓縮,頻域擴充套件;\)

  • \(當{\left| a \right|}小於1時,時域擴充套件,頻域壓縮。\)

  1. 時移特性

\[f\left( t \right)\overset {} \longleftrightarrow F\left( {j\omega } \right)\\f\left( {t + {t_0}} \right)\overset {} \longleftrightarrow F\left( {j\omega } \right) \cdot {e^{j\omega {t_0}}} \]

\(由上可知,時移平移,對應頻域的相移,它的幅頻特性,即\left| {F\left( {j\omega } \right)} \right|不改變。\)

2.離散傅立葉變換

2.1 DFT公式及使用

\[X\left( k \right) = \sum\limits_{n = 0}^{N - 1} {x\left( n \right)} W_N^{nk} \]

\(其中,{x\left( n \right)}是原始時域訊號,n是取樣點的序號,k是頻率域中的頻率值,N是取樣點總數,{W_N}是一個常數,其公式為:\)

\[{W_N} = {e^{ - \frac{{2\pi j}}{N}}} \]

所以,可以推出:

\[X = W_N^Ex \]

即可以用以下程式碼實現DFT:

data = [2 3 8 9 12 4 8 10];   % 原始離散時域訊號
N = length(data);

% DFT需要的相關矩陣:
WN = exp(-i*2*pi/N);  % 常數
WN_nk = zeros(N)+WN;  % WN_kn矩陣(初始)
xk = data';     % 時域訊號振幅(列矩陣)
E = zeros(N);   % 輔助的E(WN_kn的冪,單獨拿出來算)

%%% 傅立葉正變換即結果 %%%
for row = 0:N-1
    for cow = 0:N-1
        E(row+1,cow+1) = row*cow;
        WN_nk(row+1,cow+1) = WN_nk(row+1,cow+1)^E(row+1,cow+1);
    end
end

Xk = WN_nk * xk;   % 頻域結果
fft(data);         % Matlab自帶語句,兩者結果對比一樣

2.2 IDFT公式及使用

\[x\left( n \right) = \frac{1}{N}\sum\limits_{k = 0}^{N - 1} {X\left( k \right)} X_N^{ - nk} \]

\(同理,將其表示成{W_N}的-E次方再除以N就可以了。\)

其程式碼如下:

% 繼DFT程式碼後跟著寫
% IDFT需要的相關矩陣:
WN_nk_n = zeros(N)+WN;  % WN_kn矩陣(初始)
E_n = zeros(N);                   % 輔助的E(WN_kn的冪,單獨拿出來算)

for row = 0:N-1
    for cow = 0:N-1
        E_n(row+1,cow+1) = -row*cow;     % 注意負號
        WN_nk_n(row+1,cow+1) = WN_nk_n(row+1,cow+1)^E_n(row+1,cow+1);
    end
end

xk_n = real((WN_nk_n * Xk)/N)'     % IDFT手寫結果
ifft(Xk)                           % Matlab自帶語句,上下倆結果對比一樣。

最後,我們可以總結為什麼要使用傅立葉變換,使用它的理由就是,時域訊號或者說時域波形好採集,但是不好處理,頻域訊號或者說頻域函式好處理,但是無法直接採集,所以需要用到傅立葉變換這一強大的工具。