——利用fft實現快速卷積
姓名:田昕煜
學號:13081405
班級:通訊四班
指導教師:周爭
一. 實驗原理
應用fft實現數字濾波器實際上就是用fft來快速計算有限長度序列的線性卷積。這種方法就是先將輸入訊號x(n)通過fft變換為它的頻譜取樣值x(k),然後再和fir的頻響取樣值h(k)相乘,h(k)可以事先存放在儲存器中,最後再將乘積h(k)和x(k)通過快速傅利葉變換還原為時域序列y(n)。
二.實驗內容
三.程式與執行結果
(1)clear;
x=[2 1 1 2];
h=[1 -1 -1 1];
n1=4;
n2=4;
n=n1+n2-1;
y=conv(x,h);
n=0:length(y)-1;
subplot(2,1,1);
stem(n,y);
xlabel('n');
ylabel('輸出值');
title('線性卷積y');
xk=fft(x,n);
hk=fft(h,n);
yk=xk.*hk;
y=ifft(yk,n);
if all(imag(x)==0)&(all(imag(h)==0))
y=real(y);
endk=0:n-1;
subplot(2,1,2);
stem(k,y);
xlabel('n');
ylabel('輸出值');
title('fft計算的線性卷積y');
執行結果:
。 (2)
函式:lineconv
function y=lineconv(x,h,n)xk=fft(x,n);
hk=fft(h,n);
yk=xk.*hk;
y=ifft(yk,n);
endm檔案:
clear;
n1=16;
n2=17;
n=n1+n2-1;
n=0:15;
m=0:16;
k=0:n-1;
x1=ones(1,n1);
x2=cos((2.*pi.*n)./n1);
x3=(1/3).^n;
h=(-1/2).^m;
subplot(3,1,1);
stem(k,lineconv(x1,h,n));
subplot(3,1,2);
stem(k,lineconv(x2,h,n));
subplot(3,1,3);
stem(k,lineconv(x3,h,n));
執行結果:
結論:線性卷積長度=x(n)長度+ h(n)長度。
fft是將x(n)變換為它的dft——x(k),h(k)和x(k)相乘再通過ifft還原為時域序列y(n)。
四.實驗總結:
本次實驗相對較易,主要進行驗證實驗,完成較快。
注意長度值的選取。
數字訊號處理實驗
一 實驗目的 研究不同型別的窗函式,研究一些不同的方法來測試窗函式的效能 專注於有關窄帶訊號的幾個不同的情形。二 實驗原理 訊號是無限長的,而在進行訊號處理時只能採用有限長訊號,所以需要將訊號 截斷 在訊號處理中,截斷 被看成是用乙個有限長的 視窗 看無限長的訊號,或者從分析的角度是無限長的訊號x ...
數字訊號處理實驗
班級 08050742 姓名 劉曉華 學號 41 實驗一頻譜分析與取樣定理 一 實驗目的 1 觀察模擬訊號經理想取樣後的頻譜變化關係。2 驗證取樣定理,觀察欠取樣時產生的頻譜混疊現象 3 加深對dft演算法原理和基本性質的理解 4 熟悉fft演算法原理和fft的應用 二 實驗原理 根據取樣定理,對給...
數字訊號處理實驗一
實驗一卷積與傅利葉變換 一 實驗目的 1 了解線性卷積與圓周卷積 2 學會運用matlab求解離散時間系統的卷積和 3 學會通過求解離散時間訊號的卷積和運算得到系統的零狀態響應 4 掌握通過傅利葉變換和反變換求取圓周卷積。二 實驗內容 1.試用matlab命令求解一下離散時間系統的單位取樣響應。1 ...