DFT和FFT實驗 上傳

2022-11-29 00:48:04 字數 4193 閱讀 6059

一、實驗目的和要求

1、掌握dft變換

2、掌握dft性質

3、掌握快速傅利葉變換(fft)

二、實驗內容和原理

1、實驗內容

1)求有限長離散時間訊號的離散時間傅利葉變換並繪圖。

已知已知2)已知序列,,繪製及其離散傅利葉變換的幅度、相位圖。

3)設,,其中,randn(n)為高斯白雜訊。求出,m=2,3,4的matlab採用不同演算法的執行時間。

4)研究高密度頻譜和高解析度頻譜。

設有連續訊號

以取樣頻率對訊號x(t)取樣,分析下列三種情況的幅頻特性。

採集資料長度n=16點,做n=16點的fft,並畫出幅頻特性。

採集資料長度n=16點,補零到256點,做n=256點的fft,並畫出幅頻特性。

採集資料長度n=256點,做n=256點的fft,並畫出幅頻特性。

觀察三種不同頻率特性圖,分析和比較它們的特點以及形成的原因。

2、實驗原理

1)dft

序列x(n)的離散時間傅利葉變換(dtft)表示為,

如果x(n)為因果有限長序列,n=0,1,...,n-1,則x(n)的dtft表示為

x(n)的離散傅利葉變換(dft)表示式為

序列的n點dft是序列dtft在頻率區間[0,2π]上的n點燈間隔取樣,取樣間隔為2π/n。通過dft,可以完成由一組有限個訊號取樣值x(n)直接計算得到一組有限個頻譜取樣值x(k)。x(k)的幅度譜為,其中下標r和i分別表示取實部、虛部的運算。

x(k)的相位譜為。

離散傅利葉反變換(idft)定義為。

2)fft

快速傅利葉變換(fft)是dft的快速演算法,並不是乙個新的對映。fft利用了函式的週期性和對稱性以及一些特殊值來減少dft的運算量,可使dft的運算量下降幾個數量級,從而使數字訊號處理的速度大大提高。

若訊號是連續訊號,用fft進行譜分析時,首先必須對訊號進行取樣,使之變成離散訊號,然後就可以用fft來對連續訊號進行譜分析。為了滿足取樣定理,一般在取樣之前要設定乙個抗混疊低通濾波器,且抗混疊濾波器的截止頻率不得高於與取樣頻率的一半。

比較dft和idft的定義,兩者的區別僅在於指數因子的指數部分的符號差異和幅度尺度變換,因此可用fft演算法來計算idft。

三、主要儀器裝置

matlab

四、操作方法和實驗步驟

1、認真分析原函式,取點

2、用matlab編寫程式,執行程式得出結果

五、實驗資料記錄、處理和分析

1、求有限長離散時間訊號的離散時間傅利葉變換並繪圖。

已知已知【解答】

思路:這是一道dft的題,按照題目要求只需要取11個點即可。

第(1)小題

m檔案源**

n=11取點個數為11個

j=sqrt(-1); %定義j為複數單位

f=inline('(0.9*exp(j*pi/3))^n','n'); %定義乙個函式f(n)

w=0:2*pi/1000:2*pi定義離散域的基本頻率w為陣列,間距為2*pi/1000

xw=zeros(size(w定義乙個與w位數相等的陣列

for n=0:n-1

xw=xw+f(n)*exp(-j*w*n);

end對f(n)函式做dft變換

xn=;

for n=0:n-1

xn(n+1)=f(n);

end將f(n)的值放進陣列xn裡面,便於最後畫出xn的影象

magxw=abs(xw定義乙個陣列magxw,將abw(xw)的值賦給它

anglexw= angle(xw); %定義陣列anglexw,將angle(xw)的值賦給它

figure(1);

plot(xn,'.-');

xlabel('n'); ylabel('x(n畫出xn的圖

figure(2);

k=0:1:n-1;

plot(w,magxw

xlabel('w'); ylabel('|x(w畫出magxw的影象

figure(3);

plot(w,anglexw,'-');

xlabel('w'); ylabel('angle(x(w畫出anglexw的影象

執行結果

xn影象:

x(w)的幅度圖

x(w)的相位圖

【分析】

可見的幅度頻譜有11-1=10個極大,11-1=10個極小。而的相位則有11-1=10個極大,11-1=10個極小,並且相位在-和之間擺動。

第(2)小題

m檔案源**

n=10取點個數為11個

j=sqrt(-1定義j為複數單位

f=inline('2^n','n'); %定義乙個函式f(n)

w=0:2*pi/1000:2*pi; %定義離散域的基本頻率,將其設定為間距為2*pi/1000的陣列

xw=zeros(size(w)); %定義乙個陣列xw,位數與w相等

for n=-n:n

xw=xw+f(n)*exp(-j*w*n);

end對f(n)函式做dtft變換

xn定義乙個陣列xn

for n=-n:n

xn(n+1+n)=f(n);

end將f(n)的值放進陣列xn裡面,便於最後畫出xn的影象

magxw=abs(xw將x(w)的模值放進陣列magxw

anglexw=angle(xw將x(w)的相位放進陣列magxw

figure(1);

plot(xn,'.-');

xlabel('n'); ylabel('x(n)'); %畫出xn的圖

figure(2);

plot(w,magxw

xlabel('w'); ylabel('|x(w)|'); %畫出magxw的影象

figure(3);

plot(w,anglexw,'-');

xlabel('w'); ylabel('angle(x(w))'); %畫出anglexw的影象

xn影象

x(w)的幅度圖

x(w)的相位圖

【分析】

可見的幅度有乙個極大值,乙個極小值。的相位在之間來回振動,並且中間出現突變的情況。

2)已知序列,,繪製及其離散傅利葉變換的幅度、相位圖。

【解答】

思路:這是一道dft的題,按照題目要求只需要取51個點即可。

m檔案源**

n=51取點個數為50個

j=sqrt(-1定義j為複數單位

f=inline('cos(0.82*pi*n)+2*sin(pi*n)','n定義乙個函式f(n)

xk定義乙個陣列xk

w=2*pi/n定義離散域的基本頻率

for k=1:n

xk(k)=0;

for n=0:n-1

xk(k)=xk(k)+f(n)*exp(-j*(k-1)*w*n);

endend對f(n)函式做dft變換

xn定義乙個陣列xn

for n=0:n-1

xn(n+1)=f(n);

end將f(n)的值放進陣列xn裡面,便於最後畫出xn的影象

magxk定義乙個陣列magxk

for k=1:n

magxk(k)=abs(xk(k));

end將x(kw)的模值放進陣列magxk

anglexk定義陣列anglexk

for k=1:n

anglexk(k)=angle(xk(k));

end將x(kw)的相位放進陣列magxk

figure(1);

plot(xn,'.-');

xlabel('n'); ylabel('x(n畫出xn的圖

figure(2);

k=0:1:n-1;

plot(k,magxk,'+-')

xlabel('k'); ylabel('|x(k)|'); %畫出magxk的影象

figure(3);

plot(k,anglexk,'x-');

xlabel('k'); ylabel('angle(x(k畫出anglexk的影象

命令視窗中的執行及其結果:

xn影象

xk的幅度圖

xk的相位圖

【分析】

可見的幅度頻譜擁有兩個峰值,的相位頻譜在之間來回振動,且中間存在3個台階式的向下跳變,乙個台階式的向上跳變。

實驗一用FFT進行譜分析

一 實驗目的 1.進一步加深對dft演算法原理和基本性質的理解 因為fft只是dft的一種快速演算法,所以fft的運算結果必然滿足dft的基本性質 2.熟悉fft演算法原理和fft子程式的應用。3.學習用fft對連續訊號和時域離散訊號進行譜分析的方法,了解可能出現的分析誤差及其原因,以便在實際中正確...

實驗三 用FFT對訊號作頻譜分析 實驗報告

一 實驗目的與要求 學習用fft對連續訊號和時域離散訊號進行譜分析的方法,了解可能出現的分析誤差及其原因,以便正確應用fft。二 實驗原理 用fft對訊號作頻分析是學習數字訊號處理的重要內容,經常需要進行分析的訊號是模擬訊號的時域離散訊號。對訊號進行譜分析的重要問題是頻譜解析度d和分析誤差。頻譜解析...

實驗三 用FFT對訊號作頻譜分析 實驗報告

一 實驗目的與要求 學習用fft對連續訊號和時域離散訊號進行譜分析的方法,了解可能出現的分析誤差及其原因,以便正確應用fft。二 實驗原理 用fft對訊號作頻分析是學習數字訊號處理的重要內容,經常需要進行分析的訊號是模擬訊號的時域離散訊號。對訊號進行譜分析的重要問題是頻譜解析度d和分析誤差。頻譜解析...