傅利葉變換 Fourier Transform

2022-08-11 08:24:13 字數 4407 閱讀 1205

傅利葉在他的專著《熱的解析理論》中提出,任何乙個週期函式都可以表示為若干個正弦函式的和,即:

\[f(t)=a_0+\sum_^(a_ncos(n\omega t)+b_nsin(n\omega t))$$其中$\omega=\dfrac$,$t$為函式的週期。$a_n/b_n$和$n$分別控制了正弦波的振幅與頻率。這就是傅利葉級數的**三角形式**。

我們還可以用**復指數形式[^1]**和**積分[^2]**來表示傅利葉級數:

$$ f(t)=\sum_^f_ne^ $$ $$ f_n=\frac\int_0^t f(t)e^ dt $$其中$f$就是週期函式$f$的**傅利葉級數(fourier series, fs)**。

**如果說$f$是某段訊號在時域上的表現,$f$就是其在頻域上的表現。傅利葉變換實現的就是從時域到頻域的變換。**

![這裡寫描述](

##傅利葉變換

對於非週期函式,我們可以將其視為乙個以$(-\infty,\infty)$為乙個週期的週期函式。

經過數學推導,得到:

$$ f(\omega)=\int_^\infty f(t)e^ dt$$ $$ f(t)=\frac\int_^\infty f(\omega)e^ d\omega $$ 這叫做**傅利葉變換(fouier transform, ft)**及**傅利葉逆變換(ift)**。

注意,其結果都可能是複數。

這時,$f$不再是離散的級數,而是乙個連續的函式了。

與傅利葉級數的比較:

- 傅利葉級數:週期訊號,離散頻率,頻率分量的值

- 傅利葉變換:非週期訊號,連續頻率,頻率分量的**密度**

##卷積定理

卷積定理有兩個:

$$ ft[f_1(t)*f_2(t)]=ft[f_1(t)]\cdot ft[f_2(t)] $$ $$ ift[f_1(\omega)*f_2(\omega)]=\fracift[f_1(\omega)]\cdot ift[f_2(\omega)] $$ 分別稱為**時域卷積定理**和**頻域卷積定理**。

> 下面對時域卷積定理進行證明。

\]\begin

ft[f_1(t)f_2(t)] &= ft[\int_^\infty f_1(\tau)f_2(t-\tau) d\tau] \

&= \int_\infty[\int_\infty f_1(\tau)f_2(t-\tau) d\tau]e^ dt \

&= \int_^\infty f_1(\tau)[\int_^\infty f_2(t-\tau)e^ dt]d\tau \

&= \int_^\infty f_1(\tau)[\int_^\infty f_2(t)e^ dt]d\tau \

&= \int_^\infty f_1(\tau)e[\int_\infty f_2(t)e^ dt]d\tau \

&= \int_^\infty f_1(\tau)e^f_2(\omega) d\tau \

&= f_2(\omega) \int_^\infty f_1(\tau)e^ d\tau \

&= f_1(\omega)f_2(\omega)

\end

\[ 其實基本上就是直接展開啦。頻域卷積定理的證明也是類似的。

可以觀察到,在乙個域上進行卷積,相當於在另乙個域上進行點積。這啟發我們用複雜度低的點積運算來代替複雜度高的卷積運算。

##離散時間傅利葉變換

以上的內容都是針對連續資訊/連續函式的。但是,計算機是無法儲存連續的資訊的,只能每隔時間$t$對資訊進行取樣。也就是說,計算機把**連續的函式**轉化為了**離散的序列**。對於這樣乙個序列進行的傅利葉變換就稱為**離散時間傅利葉變換(discrete time fouier transform, dtft)**。

$$ f(\omega)=\sum_^\infty f(nt)e^ $$ 我們其實是用離散的取樣點$nt$代替了ft中連續的時間$t$。進一步,由於取樣的結果本質上是乙個序列,那麼我們可以把序列中連續兩項的間隔,也就是取樣頻率$t$看做**單位「1」**。我們用$x(n)$表示取樣結果序列,那麼有:

$$ x(\omega)=\sum_^\infty x(n)e^ $$ 事實上,這個將$t$轉化為「1」的過程,就是模擬訊號轉化為數碼訊號的過程。

其逆變換idtft的表示式為:

$$ x(n)=\int_^\pi x(\omega)e^ d\omega\]

通過dtft,我們已經能夠處理離散的取樣訊號了。但由於取樣結果序列依然是無限長的,計算機還是無法進行處理。從dtft的式子中可以看出,\(x(\omega)\)是以\(2\pi\)為週期的,那麼解決的方法很簡單:我們只從時域\((0,2\pi)\)上均勻地取\(n\)個點,用這\(n\)個點計算出頻域上的\(n\)個點,這\(n\)個點就可以作為頻域上的乙個週期。

\[ x(k)=\sum_^x(n)w_n^ \quad (k=0,1,2...,n-1)$$ 其中$w_n=e^}$,也就是n次單位根。

其實dft就是將dtft中的對$\omega$積分替換為對$\frac$求和[^3]。

這樣,我們就得到了乙個$n$點訊號到$n$點頻域的離散變換,這個變換就叫做**離散傅利葉變換(discrete fourier transform, dft)**。

其逆變換的表示式為:

$$ x(n)=\frac \sum_^x(k)w_n^ \quad (n=0,1,2...,n-1)\]

變換特點

傅利葉級數fs

週期訊號,離散頻率,頻率分量的值

傅利葉變換ft

非週期訊號,連續頻率,頻率分量的密度

離散時間傅利葉變換dtft

非週期取樣訊號,連續頻率,頻率分量的密度

離散傅利葉變換dft

有限長度非週期取樣訊號,離散頻率,對於dtft頻譜頻率分量的密度

樸素進行dft的複雜度是\(o(n^2)\),這可以從其表示式中看出。事實上我們有一種利用分治進行dft的\(o(nlogn)\)演算法,這就是常常被應用在oi中的快速傅利葉變換(fast fourier transform, fft)

為了方便,以下若不做特殊說明,\(n\)均是\(2\)的整數次冪,這可以通過在原來的序列後補若干個\(0\)至有\(2\)的整數次冪項來實現。

\[\begin

x(k) &= \sum_^x(n)w_n^ \\

&= \sum_^x(n)w_n^ + \sum_^x(n)w_n^ \\

&= \sum_^-1}x(2n)w_n^ + \sum_^-1}x(2n+1)w_n^ \\

&= \sum_^-1}x(2n)w_}^ + w_n\sum_^-1}x(2n+1)w_}^

\end

$$ 通過以上變形,原問題變成了兩個規模減半的子問題。合併兩個子問題的複雜度是$o(1)$,分治層數為$o(logn)$,所以計算一項的複雜度是$o(logn)$,計算$n$項的複雜度是$o(nlogn)$。

##例題:多項式乘法

設$n$次多項式$f_1(x)=\sum_^a_ix^i$和$m$次多項式$f_2(x)=\sum_^b_ix^i$的積為$n+m$次多項式$f_3(x)=\sum_^c_ix^i$。給出序列$a,b$,求序列$c$。

容易知道$c_k=\sum_^a_ib_$,事實上序列$c$就是序列$a$和序列$b$的**離散卷積**。

那麼根據卷積定理,$c_k=idft[dft[c_k]]=idft[dft[a_k*b_k]]=idft[dft[a_k]\cdot dft[b_k]]$

所以我們只要將序列$a$和$b$dtft到頻域,點積後再idtft回時域,就可以得到序列$c$啦。

> 時間複雜度$o((n+m)log(n+m))$。

##快速數論變換

在我們進行dtft的過程中,使用的是複數。如果精度要求很高(比如求方案數),用複數來進行fft就會出現誤差。所以我們需要找到乙個與複數單位根有相似性質的替代。

注意到fft能夠進行的根本因素就是複數單位根具有$w_n^2=w_}$這一性質。事實上,模意義域下的原根[^4]就是複數單位根的乙個很好的替代。

定義$w_n=g^}(mod \ p)$,則有:

$$ x(k)=\sum_^x(n)w_n^ \quad (mod \ p)$$ 這就是**快速數論變換(number theory transform, ntt)**。

進行ntt時,最常用的模數就是998244353,其原根$g=3$。

##code

[uoj34 - 多項式乘法](

[^1]:$e^=cos\theta+isin\theta$

[^2]:$\int_a^b f(x)dx$表示對$x\in(a,b)$的$f(x)$進行積分。

[^3]: 把這個式子轉化成類似dtft的形式:

$$ x(k)=\sum_^x(n)w_n^=\sum_^ x(n)e^n} $$ $\frac$代替的就是dtft中$\omega$的位置。

[^4]: $p$的原根$g$定義為使得$g^0,g^1,...,g^ \ (mod \ p)$互不相同的數。\]

傅利葉變換與快速傅利葉變換

作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...

傅利葉變換

1 為什麼要進行傅利葉變換,其物理意義是什麼?傅利葉變換是數字訊號處理領域一種很重要的演算法。要知道傅利葉變換演算法的意義,首先要了解傅利葉原理的意義。傅利葉原理表明 任何連續測量的時序或訊號,都可以表示為不同頻率的正弦波訊號的無限疊加。而根據該原理創立的傅利葉變換演算法利用直接測量到的原始訊號,以...

傅利葉變換

傅利葉變換 1 傅利葉變化公式 f u,v symsum symsum f x,y exp j 2 pi u x m v y n 2 根據公式所寫 這個 的時間複雜度為 o n 2 算一幅 512 512 的影象的時間大概是2個小時,沒有實際應用價值,應該要採用快速傅利葉變換。銳化空間濾波器 頻率濾...