快速卷积与快速相关——MATLAB
一、實(shí)驗(yàn)?zāi)康?/h2>
1、學(xué)會(huì)FFT算法程序(或函數(shù))的使用方法;
2、了解序列的線性卷積和圓周卷積之間的關(guān)系;
3、驗(yàn)證有限長FFT算法實(shí)現(xiàn)線性相關(guān)運(yùn)算的快速計(jì)算方法;
4、解FFT的點(diǎn)數(shù)對快速卷積與快速相關(guān)運(yùn)算結(jié)果所產(chǎn)生的影響;
5、了學(xué)會(huì)利用FFT算法進(jìn)行有限長序列的線性卷積的快速計(jì)算;
6、掌握基-2快速傅立葉變換(Fast FourierTransform,FFT)的算法原理及其程序?qū)崿F(xiàn)方法.
二、實(shí)驗(yàn)原理
1、有限長序列的線性卷積和圓周卷積線性卷積和圓周卷對于有限長序列,存在兩種形式的卷積,即積。設(shè)x(n)是長度光JM的有限長序列,y(n)是長度為N的有限長序列,則二者的線性卷積可表示為:
M-1
線性卷積的結(jié)果序列f(n)是一個(gè)長度為L=N +M -1的有限有限長序列,且長序列。將x(n)及y(n)均補(bǔ)零增長為L點(diǎn)的二者的L點(diǎn)的圓周卷積可表示為:
圓周卷積的結(jié)果序列f(n)是一個(gè)長度為L的有限長序列,由圓周卷積的點(diǎn)數(shù)所決定。有限長序列的線性卷積和圓周卷積之間的關(guān)系可用公式表示如下:
即:圓周卷積是線性卷積以圓周卷積的點(diǎn)數(shù)幾為周期進(jìn)行周期延拓后所取的主值序列。因而,在圓周卷積的點(diǎn)數(shù)大于或等于線性卷積的長度時(shí)、圓周卷積結(jié)果和線性卷積結(jié)果相等,這也是快速卷積算法的理論基礎(chǔ)之一。
2、離散傅里葉變換的卷積性質(zhì)
離散傅里葉變換的卷積性質(zhì)也是快速卷積算法的另一理論基礎(chǔ)。若f(n)是有限長序列x(n)和有限長序列y(n)的L點(diǎn)圓周卷積,即公式(5-2),則 f(n)的L點(diǎn)離散傅里葉變換為: F_c (k)=X(k)Y(k)
3、Matlab中FFT與IFFT的實(shí)現(xiàn)
離散傅立葉變換(Discrete Fourier Transform, DFT)實(shí)現(xiàn)了頻域的離散化,方便了計(jì)算機(jī)處理,在數(shù)字信號(hào)處理中有著非常重要的作用。但直接計(jì)算DFT的運(yùn)算量與變換長度N的平方成正比,計(jì)算量太大。而快速傅立葉變換FFT則是快速計(jì)算DFT的有效算法,大大提高了DFT的運(yùn)算效率,在信號(hào)頻譜的分析、濾波器頻率響應(yīng)的計(jì)算,以及線性卷積的快速計(jì)算等方面起著非常重要的作用。FFT 采用分組計(jì)算的方式進(jìn)行DFT的快速計(jì)算,具體算法原理參看教材,在附錄B中也給出了常用的基-2時(shí)間抽取FFT算法和分裂基FFT 算法的C語言程序。相應(yīng)的,IFFT 則為離散傅里葉反變換,即 IDFT 的快速計(jì)算方法。在Matlab中,提供了f(t)和 ifi(t)兩個(gè)函數(shù)來分別實(shí)現(xiàn)快速傅立葉變換的正變換和反變換。Ft(t)和if(t)兩個(gè)函數(shù)是用機(jī)器語言而不是Matlab 指令寫成的,執(zhí)行速度很快。除了輸入、輸出參數(shù)的含義不同之外,這兩個(gè)函數(shù)的調(diào)用方法完全相同,因此以ff()函數(shù)為例說明二者的使用方法。ff()函數(shù)常用調(diào)用格式有兩種:
(1)Xk=fft(xn)
其中,xn為輸入時(shí)域序列x(n),返回結(jié)果xk為x(n)的離散傅里葉變換X(k)。當(dāng)xn是矩陣時(shí)(對應(yīng)于多通道信號(hào)),計(jì)算xn中每一列信號(hào)的離散傅里葉變換。當(dāng)xn的長度是2的整數(shù)冪,采
用基2快速算法計(jì)算,否則采用較慢的混合基算法進(jìn)行計(jì)算。
(2)Xk=fft(xn,NFFT)
這種調(diào)用格式相比較于上一種調(diào)用格式,多了一個(gè)輸入?yún)?shù)NFFT,用于指定FFT的點(diǎn)數(shù)。當(dāng)NFFT的值是2的整數(shù)冪,采用基-2快速算法計(jì)算,否則采用較慢的混合基算法進(jìn)行計(jì)算。當(dāng)xn的長度大于NFFT時(shí),對 xn進(jìn)行自動(dòng)截?cái)?當(dāng)xn的長度小于NFFT時(shí),在xn后自動(dòng)進(jìn)行補(bǔ)零。
4、快速卷積基本算法的原理
利用FFT進(jìn)行有限長序列的線性卷積的快速計(jì)算即為快速卷積算法。按照上述相關(guān)原理,利用FFT計(jì)算線性卷積,即計(jì)算公式中的f(n)的算法步驟可用下圖來表示:
其中,FFT運(yùn)算的點(diǎn)數(shù)L應(yīng)滿足L≥N+ M-1。為了采用基-2的算法,常常需要L還應(yīng)滿足L=2M
5、快速相關(guān)算法原理
利用 FFT 講行有限長序列相關(guān)運(yùn)算的快速實(shí)現(xiàn)則稱為快速相關(guān)算法。若(n)是長度頭M的有限長序列,y(n)是長度為N的有限長序列,則一者的線性百相關(guān)序列R(m)與二者的線性卷積運(yùn)算之間的關(guān)系可表示
由于線性卷積可以用FFT講行快速計(jì)算,則按公式,相關(guān)運(yùn)算也可以利用fft進(jìn)行快速計(jì)算,在此不再贅述其原理。需要時(shí),根據(jù)傅立葉變換的反折和共軛特性可以減少一次FFT的使用提高計(jì)算效率。
三、實(shí)驗(yàn)步驟、數(shù)據(jù)記錄及處理
本實(shí)驗(yàn)利用Matlab中提供的fft()和 ifft()函數(shù)進(jìn)行快速卷積算法和快速相關(guān)算法性卷積和圓周卷積之間的關(guān)系進(jìn)行驗(yàn)證。具體的實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)的實(shí)現(xiàn),并對有限長序列線
步驟如下所示:
其中:
1、用 Matlab生成兩個(gè)有限長序列x(n) y(n)
(1)基于fft()和 ifft()函數(shù),編程利用4點(diǎn)快速卷積算法計(jì)算有限長序列x(n)與y(n)的卷積,結(jié)果令為c1(n)。
(2)基于fft()和 ifft()函數(shù),編程利用速卷積算法計(jì)算有限長序列x(n)與y(n)的卷積,結(jié)果令為c2(n)
(3)調(diào)用conv()函數(shù)計(jì)算有限長序列x(n)與y(n)的卷積,結(jié)果令為c3(n)。分別繪制序列x(n)、y(n)、c1(n)、c2(n)和c3(n)的圖形。對結(jié)果進(jìn)行分析,并通過實(shí)驗(yàn)結(jié)果驗(yàn)證有限長序列線生卷積和圓周卷積之間的關(guān)系。
2、設(shè)兩個(gè)有限長序列x(n)和h(n)分別為:
(1)x(n)=(sin 0.4n)·R,(n+1);
(2)h(n)=(0.9)"R,o(n+1)
按圖所示的快速卷積算法原理編寫完整的快速卷積算法程序計(jì)算y(n)=x(n)*h(n),繪制序列圖形,并通過 conv()函數(shù)對結(jié)果進(jìn)行驗(yàn)證。
3、將實(shí)驗(yàn)1中實(shí)驗(yàn)內(nèi)容4所給定的信號(hào)利用快速相關(guān)算法進(jìn)行自相關(guān)序列的計(jì)算,并將結(jié)果與實(shí)驗(yàn)1中的結(jié)果進(jìn)行對比驗(yàn)證。
實(shí)驗(yàn)程序:
四、思考題
(1)對實(shí)驗(yàn)內(nèi)容2中快速卷積基本算法的運(yùn)算量進(jìn)行分析,即乘法和加法運(yùn)算次數(shù)。
(2)利用實(shí)例說明快速卷積基本算法的適用條件,即在什么情況下效率最高。
(3)實(shí)驗(yàn)內(nèi)容3中,如何通過DFT的性質(zhì),減少一次ftt()函數(shù)的調(diào)用,提高計(jì)算效率?
五、總結(jié)
通過此次實(shí)驗(yàn)的練習(xí),加深理解FFT 在實(shí)現(xiàn)數(shù)字濾波(或快速卷積)中的重要作用,更好的利用FFT進(jìn)行數(shù)字信號(hào)處理,并且掌握了循環(huán)卷積和線性卷積兩者之間的關(guān)系。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的快速卷积与快速相关——MATLAB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Screenium 3 for Mac
- 下一篇: 高颜值网易云音乐第三方播放器 YesPl