版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 實驗報告</b></p><p> 課程名稱: 信號分析與處理 指導(dǎo)老師: 成績:__________________</p><p> 實驗名稱:離散傅里葉變換和快速傅里葉變換 實驗類型: 基礎(chǔ)實驗 同組學(xué)生姓名: </p><p> 第二次
2、實驗 離散傅里葉變換和快速傅里葉變換</p><p><b> 一、實驗?zāi)康?lt;/b></p><p> 1.1掌握離散傅里葉變換(DFT)的原理和實現(xiàn);</p><p> 1.2掌握快速傅里葉變換(FFT)的原理和實現(xiàn),掌握用FFT對連續(xù)信號和離散信號進(jìn)行譜分析的方法。</p><p> 1.3 會用Matlab
3、軟件進(jìn)行以上練習(xí)。</p><p><b> 二、實驗原理</b></p><p> 2.1關(guān)于DFT的相關(guān)知識</p><p> 序列x(n)的離散事件傅里葉變換(DTFT)表示為</p><p><b> ,</b></p><p> 如果x(n)為因果有限長序
4、列,n=0,1,...,N-1,則x(n)的DTFT表示為</p><p><b> ,</b></p><p> x(n)的離散傅里葉變換(DFT)表達(dá)式為</p><p><b> ,</b></p><p> 序列的N點DFT是序列DTFT在頻率區(qū)間[0,2π]上的N點燈間隔采樣,采樣
5、間隔為2π/N。通過DFT,可以完成由一組有限個信號采樣值x(n)直接計算得到一組有限個頻譜采樣值X(k)。X(k)的幅度譜為,其中下標(biāo)R和I分別表示取實部、虛部的運(yùn)算。X(k)的相位譜為。</p><p> 離散傅里葉反變換(IDFT)定義為</p><p><b> 。</b></p><p> 2.2關(guān)于FFT的相關(guān)知識</p
6、><p> 快速傅里葉變換(FFT)是DFT的快速算法,并不是一個新的映射。FFT利用了函數(shù)的周期性和對稱性以及一些特殊值來減少DFT的運(yùn)算量,可使DFT的運(yùn)算量下降幾個數(shù)量級,從而使數(shù)字信號處理的速度大大提高。</p><p> 若信號是連續(xù)信號,用FFT進(jìn)行譜分析時,首先必須對信號進(jìn)行采樣,使之變成離散信號,然后就可以用FFT來對連續(xù)信號進(jìn)行譜分析。為了滿足采樣定理,一般在采樣之前要設(shè)
7、置一個抗混疊低通濾波器,且抗混疊濾波器的截止頻率不得高于與采樣頻率的一半。</p><p> 比較DFT和IDFT的定義,兩者的區(qū)別僅在于指數(shù)因子的指數(shù)部分的符號差異和幅度尺度變換,因此可用FFT算法來計算IDFT。</p><p> 實驗內(nèi)容與相關(guān)分析(共6道)</p><p> 說明:為了便于老師查看,現(xiàn)將各題的內(nèi)容寫在這里——</p>&l
8、t;p> 題目按照3.1、3.2、...、3.6排列。每道題包含如下內(nèi)容:題干、解答(思路、M文件源代碼、命令窗口中的運(yùn)行及其結(jié)果)、分析。其中“命令窗口中的運(yùn)行及其結(jié)果”按照小題順序排列,各小題包含命令與結(jié)果(圖形或者序列)。</p><p> 3.1 求有限長離散時間信號x(n)的離散時間傅里葉變換(DTFT)X(ejΩ)并繪圖。</p><p><b> 已知;
9、(2)已知。</b></p><p><b> 【解答】</b></p><p> 思路:這是DTFT的變換,按照定義編寫DTFT的M文件即可??紤]到自變量Ω是連續(xù)的,為了方便計算機(jī)計算,計算時只取三個周期[-2π,4π]中均勻的1000個點用于繪圖。</p><p> 理論計算的各序列DTFT表達(dá)式,請見本題的分析。<
10、/p><p> M文件源代碼(我的Matlab源文件不支持中文注釋,抱歉):</p><p> function DTFT(n1,n2,x)</p><p> %This is a DTFT function for my experiment of Signal Processing & Analysis.</p><p> w
11、=0:2*pi/1000:2*pi;%Define the bracket of omega for plotting.</p><p> X=zeros(size(w));%Define the initial values of X.</p><p> for i=n1:n2</p><p> X=X+x(i-n1+1)*exp((-1)*j*w*i);%
12、It is the definition of DTFT.</p><p><b> end</b></p><p> Amp=abs(X);%Acquire the amplification.</p><p> Phs=angle(X);%Acquire the phase angle (radian).</p><
13、;p> subplot(1,2,1);</p><p> plot(w,Amp,'r'); xlabel('\Omega');ylabel('Amplification');hold on;</p><p> %Plot amplification on the left.</p><p> subplo
14、t(1,2,2);</p><p> plot(w,Phs,'b');xlabel('\Omega');ylabel('Phase Angle (radian)');hold off;</p><p> %Plot phase angle on the right.</p><p><b> end&l
15、t;/b></p><p> 命令窗口中的運(yùn)行及其結(jié)果(理論計算的各序列DTFT表達(dá)式,請見本題的分析):</p><p><b> 第(1)小題</b></p><p> >> n=(-2:2);</p><p> >> x=1.^n;</p><p>
16、; >>DTFT(-2,2,x);</p><p><b> 第(2)小題</b></p><p> >> n=(0:10);</p><p> >> x=2.^n;</p><p> >> DTFT(0,10,x);</p><p>&
17、lt;b> 【分析】</b></p><p> 對于第(1)小題,由于序列x(n)只在有限區(qū)間(-2,-1,-,1,2)上為1,所以是離散非周期的信號。它的幅度頻譜相應(yīng)地應(yīng)該是周期連續(xù)信號。事實上,我們可計算出它的表達(dá)式:</p><p> ,可見幅度頻譜擁有主極大和次極大,兩個主極大間有|5-1|=4個極小,即有3個次級大。而對于它的相位頻譜,則是周期性地在-π、
18、0、π之間震蕩。</p><p> 對于第(2)小題,由于是離散非周期的信號。它的幅度頻譜相應(yīng)地應(yīng)該是周期連續(xù)信號。而它的表達(dá)式:,因此主極大之間只有|0-1|=1個極小,不存在次級大。而對于它的相位頻譜,則是在一個長為2π的周期內(nèi)有|11-1|=10次振蕩。</p><p> 而由DTFT的定義可知,頻譜都是以2π為周期向兩邊無限延伸的。由于DTFT是連續(xù)譜,對于計算機(jī)處理來說特別困
19、難,因此我們才需要離散信號的頻譜也離散,由此構(gòu)造出DFT(以及為加速計算DFT的FFT)。</p><p> 3.2已知有限長序列x(n)={8,7,9,5,1,7,9,5},試分別采用DFT和FFT求其離散傅里葉變換X(k)的幅度、相位圖。</p><p><b> 【解答】</b></p><p> 思路:按照定義編寫M文件即可。&l
20、t;/p><p><b> M文件源代碼:</b></p><p><b> i) DFT函數(shù):</b></p><p> function DFT(N,x)</p><p> %This is a DFT function for my experiment of Signal Process
21、ing & Analysis.</p><p> k=(0:N-1);%Define variable k for DFT.</p><p> X=zeros(size(k));%Define the initial valves of X.</p><p> for i=0:N-1</p><p> X=X+x(i+1)*e
22、xp((-1)*j*2*k*pi/N*i);%It is the definition of DFT.</p><p><b> end</b></p><p> Amp=abs(X);%Acquire the amplification.</p><p> Phs=angle(X);%Acquire the phase angle (r
23、adian).</p><p> subplot(1,2,1);</p><p> stem(k,Amp,'.',’MarkerSize’,18); xlabel('k');ylabel('Amplification');hold on;</p><p> %Plot amplification on the l
24、eft.</p><p> subplot(1,2,2);</p><p> stem(k,Phs,'*');xlabel('k');ylabel('Phase Angle (radian)');hold off;</p><p> %Plot phase angle on the right.</p>
25、;<p><b> end</b></p><p> ii) 基2-FFT函數(shù)</p><p> function myFFT(N,x)</p><p> %This is a base-2 FFT function.</p><p> lov=(0:N-1);</p><p&
26、gt;<b> j1=0;</b></p><p> for i=1:N %indexed addressing</p><p><b> if i<j1+1</b></p><p> temp=x(j1+1);</p><p> x(j1+1)=x(i);</p>&
27、lt;p> x(i)=temp;</p><p><b> end</b></p><p><b> k=N/2;</b></p><p> while k<=j1</p><p><b> j1=j1-k;</b></p><p>
28、;<b> k=k/2;</b></p><p><b> end</b></p><p><b> j1=j1+k;</b></p><p><b> end</b></p><p><b> digit=0;</b>&l
29、t;/p><p><b> k=N;</b></p><p><b> while k>1</b></p><p> digit=digit+1;</p><p><b> k=k/2;</b></p><p><b> end&l
30、t;/b></p><p> n=N/2;% Now we start the "butterfly-shaped" process.</p><p> for mu=1:digit</p><p> dif=2^(mu-1);%Differnce between the indexes of the target variables
31、.</p><p><b> idx=1;</b></p><p><b> for i=1:n</b></p><p><b> idx1=idx;</b></p><p><b> idx2=1;</b></p><p>
32、; for j1=1:N/(2*n)</p><p> r=(idx2-1)*2^(digit-mu);</p><p> wn=exp(j*(-2)*pi*r/N);%It is the "circulating coefficients".</p><p> temp=x(idx);</p><p> x(i
33、dx)=temp+x(idx+dif)*wn;</p><p> x(idx+dif)=temp-x(idx+dif)*wn;</p><p> idx=idx+1;</p><p> idx2=idx2+1;</p><p><b> end</b></p><p> idx=idx1
34、+2*dif;</p><p><b> end</b></p><p><b> n=n/2;</b></p><p><b> end</b></p><p> Amp=abs(x);%Acquire the amplification.</p>&l
35、t;p> Phs=angle(x);%Acquire the phase angle (radian).</p><p> subplot(1,2,1);</p><p> stem(lov,Amp,'.',’MarkerSize’,18);</p><p> xlabel('FFT k');ylabel('FF
36、T Amplification');hold on;</p><p> %Plot the amplification.</p><p> subplot(1,2,2);</p><p> stem(lov,Phs,'*');xlabel('FFT k');ylabel('FFT Phase Angle (rad
37、ian)');hold off;</p><p><b> end</b></p><p> 命令窗口中的運(yùn)行及其結(jié)果:</p><p><b> DFT:</b></p><p> >> x=[8,7,9,5,1,7,9,5];</p><p>
38、 >> DFT(8,x);</p><p><b> FFT:</b></p><p> >> x=[8,7,9,5,1,7,9,5];</p><p> >> myFFT(8,x);</p><p><b> 【分析】</b></p>&
39、lt;p> DFT是離散信號、離散頻譜之間的映射。在這里我們可以看到序列的頻譜也被離散化。事實上,我們可以循著DFT構(gòu)造的方法驗證這個頻譜:</p><p> 首先,將序列做N=8周期延拓,成為離散周期信號。然后利用DFS計算得到延拓后的頻譜:</p><p> ,從而取DFS的主值區(qū)間得到DFT,與圖一致。因此計算正確。</p><p> 而對于FF
40、T,我們可以看到它給出和DFT一樣的結(jié)果,說明了FFT算法就是DFT的一個等價形式。不過,由于序列不夠長,F(xiàn)FT在計算速度上的優(yōu)越性尚未凸顯。</p><p> 3.3已知連續(xù)時間信號x(t)=3cos8πt, X(ω)=,該信號從t=0開始以采樣周期Ts=0.1 s進(jìn)行采樣得到序列x(n),試選擇合適的采樣點數(shù),分別采用DFT和 FFT求其離散傅里葉變換X(k)的幅度、相位圖,并將結(jié)果與X(k)的幅度、相位圖
41、,并將結(jié)果與X(ω)相比較。</p><p><b> 【解答】</b></p><p> 思路:此題與下一題都是一樣的操作,可以在編程時統(tǒng)一用變量g(0或1)來控制是否有白噪聲。這里取g=0(無白噪聲)。</p><p> 另外,分別取12點、20點、28點采樣,以考察采樣長度的選擇與頻譜是否泄漏的關(guān)系。</p><
42、p><b> M文件源代碼:</b></p><p><b> i)采樣函數(shù):</b></p><p> function xs=sampJune3(N,Ts,g)</p><p> %This is a function applied to Problem 3 & 4.</p>&l
43、t;p> %N: number of sampling points; Ts: sampling period; g=0: No gaussian noise; g=1: gussian noise exists.</p><p><b> n=1:N;</b></p><p> for i=1:N%Note that i must start at 0
44、in analysis. Thus I made a adaptation.</p><p> sample(i)=3*cos(8*pi*Ts*(i-1))+g*randn;</p><p> %In Matlab, index starts at 1, which is not consistent with our habit. Thus I made a adaptation i
45、n codes.</p><p> %It is a sampling process with(g=1)/without(g=0) noise.</p><p><b> end</b></p><p> xs=sample;</p><p> plot(n-1,sample,'.',’Mark
46、erSize’,18);xlabel('n');ylabel('value');hold off;</p><p> % Must use (n-1), because in Matlab, index starts at 1.</p><p><b> end</b></p><p> ii)DFT和基2
47、-FFT函數(shù)的代碼,請見第3.2節(jié)。不需再新編一個。</p><p> 命令窗口中的運(yùn)行及其結(jié)果:</p><p><b> 12點采樣:</b></p><p> >> xs=sampJune3(12,0.1,0);%末尾的0表示無噪聲。</p><p> >> DFT(12,xs);&
48、lt;/p><p> >> myFFT(12,xs);</p><p><b> 20點采樣:</b></p><p> >> xs=sampJune3(20,0.1,0);%末尾的0表示無噪聲。</p><p> >> DFT(20,xs);</p><p&g
49、t; >> myFFT(20,xs);</p><p><b> 28點采樣:</b></p><p> >> xs=sampJune3(28,0.1,0);%末尾的0表示無噪聲。</p><p> >> DFT(28,xs);</p><p> >> myFFT
50、(28,xs);</p><p><b> 【分析】</b></p><p> 分別取12點、20點、28點采樣,以考察采樣長度的選擇與頻譜是否泄漏之間的關(guān)系?,F(xiàn)在與原信號頻譜比較后可以得出如下結(jié)論:</p><p> 原信號的頻譜是,在±8π上各有一強(qiáng)度為3π的譜線,在其余頻率上為0。</p><p>
51、 可見原信號被0.1 s采樣周期的采樣信號離散化之后,譜線以20π為周期重復(fù),并且只在(20k±8)π (k為整數(shù))處非0。那么,在20點DFT(采樣時間原信號周期的整數(shù)倍)中,只有第8根、第12根譜線非0。而在12點、28點DFT中,由于采樣時間不是原信號周期的整數(shù)倍,譜線將向兩邊泄漏。</p><p> 不過,對比12點采樣和28點采樣,我們還可以發(fā)現(xiàn),28點采樣頻譜的主譜線高度是次譜線高度的4
52、倍,兒12點采樣頻譜的主譜線高度是次譜線高度的3倍??梢?,在無法保證采樣時間是信號周期整數(shù)倍的情況下,增加采樣時間有助于減輕頻譜泄漏的程度。</p><p> 3.4對第3步中所述連續(xù)時間信號疊加高斯白噪聲信號,重復(fù)第3步過程。</p><p><b> 【解答】</b></p><p> 思路:此題與上一題都是一樣的操作,可以在編程時統(tǒng)
53、一用變量g(0或1)來控制是否有白噪聲。這里取g=1(有白噪聲)。</p><p> 另外,仍然分別取12點、20點、28點采樣,以考察采樣長度的選擇與頻譜是否泄漏的關(guān)系。</p><p><b> M文件源代碼:</b></p><p> 不需要再新編程序??梢灾苯右蒙厦娴暮瘮?shù):</p><p> sampJ
54、une3(N,Ts,g),取g=1,以體現(xiàn)存在白噪聲</p><p><b> DFT(N,x)</b></p><p> myFFT(N,x)</p><p> 命令窗口中的運(yùn)行及其結(jié)果:</p><p><b> 12點采樣:</b></p><p> >
55、> xs=sampJune3(12,0.1,1);%末尾的1表示有噪聲。</p><p> >> DFT(12,xs);</p><p> >> myFFT(12,xs);</p><p><b> 20點采樣:</b></p><p> >> xs=sampJune3(
56、20,0.1,1);%末尾的1表示有噪聲。</p><p> >> DFT(20,xs);</p><p> >> myFFT(20,xs);</p><p><b> 28點采樣:</b></p><p> >> xs=sampJune3(28,0.1,0);%末尾的1表示有
57、噪聲。</p><p> >> DFT(28,xs);</p><p> >> myFFT(28,xs);</p><p><b> 【分析】</b></p><p> 依然分別取12點、20點、28點采樣。仍然與原信號的頻譜(圖3.3.10)比較,可以得到結(jié)論:</p>&
58、lt;p> 由于疊加了噪聲,所以頻譜都受到了一定的干擾。由于白噪聲在各個頻率的功率相等,因此頻譜上各處的干擾也是均勻隨機(jī)的。</p><p> 不過,通過對比我們可以發(fā)現(xiàn),20點采樣(無噪聲時不發(fā)生泄漏的采樣方法)在存在噪聲時,仍然可以明顯區(qū)分出原信號的譜線。第二好的是28點采樣,因為采樣時間較長,即使存在頻譜泄漏也能較好地區(qū)分原信號的譜線。而最差的是12點采樣,由于噪聲的存在和嚴(yán)重的頻譜泄漏,它的次譜
59、線與主譜線的高度相差不大,使原信號不明顯。</p><p> 3.5已知序列,X(k)是x(n)的6點DFT,設(shè)。</p><p> 若有限長序列y(n)的6點DFT是,求y(n)。</p><p> 若有限長序列w(n)的6點DFT W(k)是的實部,求w(n)。</p><p> 若有限長序列q(n)的3點DFT是,k=0,1,2
60、,求q(n)。</p><p><b> 【解答】</b></p><p> 思路:這是對DFT進(jìn)行變換后求IDFT。考慮到IDFT和DFT定義的對稱性,可以在DFT的基礎(chǔ)上略加調(diào)整既可用于計算。</p><p><b> 首先,∵,</b></p><p> ∴它的6點采樣是序列是。值得指
61、出的是,在Matlab中,數(shù)組的序號是從1開始的(而在信號分析中習(xí)慣從0開始),不過我在上面編程時已考慮到這一情況,具體可見實驗報告最后的“附錄”。</p><p> 首先生成x(n)的6點DFT,再按照各小題分別轉(zhuǎn)換,最后求相應(yīng)的IDFT。</p><p><b> M文件源代碼:</b></p><p> i) 輸出x(n)的6點DF
62、T的函數(shù):</p><p> function X = ExportDFT(N,x)</p><p> %This is a DFT function that exports the solution to vector X.</p><p> k=(0:N-1); %Define var
63、iable k for DFT.</p><p> X=zeros(size(k)); %Define the initial valves of X.</p><p> for i=0:N-1</p><p> X=X+x(i+1)*exp((-1)*j*2*k*pi/N*i); %It is
64、 the definition of DFT.</p><p><b> end</b></p><p><b> end</b></p><p> ii)算第(1)小題的Y(k)的函數(shù):</p><p> function Y = Convertor1(X)</p><
65、p> %This is a mathematical convertor for the subproblem (1).</p><p><b> for k=1:6</b></p><p> Y(k)=exp((-j)*2*pi*(-4*(k-1))/6)*X(k);</p><p> %Here we must use (k-
66、1),because in Matlab index starts at 1.</p><p><b> end</b></p><p><b> end</b></p><p> iii)算第(2)小題的W(k)的函數(shù):</p><p> function W = Convertor2(X
67、)</p><p> %This is a mathematical convertor for the subproblem (2).</p><p> W=real(X);%Acquire the real part of X.</p><p><b> end</b></p><p> iv)算第(3)小題
68、的Q(k)的函數(shù):</p><p> function Q = Convertor3(X)</p><p> %This is a mathematical convertor for the subproblem (3).</p><p> Q=zeros(3);% Detailed explanation goes here</p>&l
69、t;p> for tmp=1:3</p><p> Q(tmp)=X(2*tmp);</p><p><b> end</b></p><p><b> end</b></p><p> v)輸出IDFT的函數(shù):</p><p> function x =
70、ExportIDFT(N,X)</p><p> %This is the IDFT function for my experiment.</p><p> n=(0:N-1);%Define variable n for IDFT.</p><p> x=zeros(size(n));%Define the initial valves of x.<
71、/p><p> for k=0:N-1</p><p> x=x+X(k+1)*exp(j*2*k*pi/N*n);</p><p><b> end</b></p><p><b> x=x/N;</b></p><p> a=real(x);%We MUST use
72、 real(x), though we may ALREADY know x is real. </p><p> %It's caused by numeric calculation (not analytic calculation) in Matlab.</p><p> stem(n,a,'.','MarkerSize',18);xla
73、bel('n');ylabel('Solution');</p><p><b> end</b></p><p> 命令窗口中的運(yùn)行及其結(jié)果:</p><p> >> x=[4,3,2,1,0,0];</p><p> >> X=ExportDFT(6,x
74、);</p><p><b> 第(1)小題</b></p><p> >> Y=Convertor1(X);</p><p> >> y=ExportIDFT(6,Y)</p><p><b> y =</b></p><p> Colum
75、ns 1 through 4</p><p> 0.0000 + 0.0000i 0.0000 + 0.0000i 4.0000 + 0.0000i 3.0000 + 0.0000i</p><p> %虛部都是0,說明是實數(shù)</p><p> Columns 5 through 6</p><p> 2.0000 + 0.
76、0000i 1.0000 - 0.0000i %虛部都是0,說明是實數(shù)</p><p> %事實上,在Matlab中,由于數(shù)值計算的截斷誤差,對原復(fù)數(shù)做乘法后,答案的虛部可能有一極小的量。</p><p><b> 第(2)小題</b></p><p> >> W=Convertor2(X);</p>&l
77、t;p> >> w=ExportIDFT(6,W)</p><p><b> w =</b></p><p> Columns 1 through 4</p><p> 4.0000 + 0.0000i 1.5000 + 0.0000i 1.0000 + 0.0000i 1.0000 + 0.0000i&l
78、t;/p><p> %虛部都是0,說明是實數(shù)</p><p> Columns 5 through 6</p><p> 1.0000 + 0.0000i 1.5000 + 0.0000i %虛部都是0,說明是實數(shù);</p><p> %事實上,在Matlab中,由于數(shù)值計算的截斷誤差,對原復(fù)數(shù)做乘法后,答案的虛部可能有一極小的量。&
79、lt;/p><p><b> 第(3)小題</b></p><p> >> Q=Convertor3(X);</p><p> >> q=ExportIDFT(6,Q)</p><p><b> q =</b></p><p> Columns
80、1 through 4</p><p> 1.5000 - 0.0000i -0.1667 - 0.2887i 0.7500 - 1.2990i 0.8333 - 0.0000i</p><p> Columns 5 through 6</p><p> -0.5000 - 0.8660i 1.0833 - 1.8764i</p>
81、<p> 這里的答案都是幅值、相位均非0的復(fù)數(shù),而教材(實驗指導(dǎo)第109頁)并未要求作圖,這里略去。</p><p> 答案:q(n)={1.5,-0.1667-0.2887i,0.7500-1.2990i,0.8333,-0.5000-0.8660i,1.0833-1.8764i}</p><p><b> 【分析】</b></p>&
82、lt;p> 對原序列進(jìn)行DFT運(yùn)算后,可以得到X(k)={10,3.5-4.33i,2.5-0.866i,2,2.5+0.866i,3.5+4.330i}。</p><p> 第(1)小題,根據(jù)DFT的性質(zhì)可以判斷,對原頻譜乘上旋轉(zhuǎn)因子之后進(jìn)行IDFT得到的y(n),就是對原序列做圓周移位:。</p><p> 第(2)小題,由于對原頻譜取了實部,那么根據(jù)DFT的奇偶虛實性知,
83、得到的w(n)也是實數(shù)的。</p><p> 第(3)小題,對原信號進(jìn)行了尺度變換(“抽取”),導(dǎo)致丟失了一些譜線,使得無法通過IDFT得到原來的序列x(n)。說明頻譜記錄了原有信號的信息,若頻譜發(fā)生變化,則對應(yīng)的時域信號也隨之改變。</p><p> 3.6已知信號,其中f1=4 Hz、f2=4.02 Hz、f3=5 Hz,采用采樣頻率為20 Hz進(jìn)行采樣,求</p>
84、<p> 當(dāng)采樣長度N分別為512和2048情況下x(t)的幅度頻譜;</p><p> 當(dāng)采樣長度N為32,且增補(bǔ)N個零點、4N個零點、8N個零點、16N個零點情況下x(t)的幅度頻譜。</p><p><b> 【解答】</b></p><p> 思路:采樣是有限且離散的,用DFT(FFT算法)計算頻譜,以便得到離散的頻譜
85、,并且具有較高速度。</p><p> 20 Hz對應(yīng)的采樣周期Ts=0.05s。</p><p><b> M文件源代碼:</b></p><p> i)采樣函數(shù)(其中Plus表示采樣后補(bǔ)零的個數(shù))</p><p> function xs=sampJune6(N,Plus)</p><p&
86、gt; %This is a function applied to Problem 6</p><p> %N:samling points;Plus:quantity of additinal zero points.</p><p><b> Ts=1/20;</b></p><p> w1=2*pi*4;w2=2*pi*4.02
87、;w3=2*pi*5;</p><p> sample=zeros(1,N+Plus);</p><p><b> n=(1:N);</b></p><p> sample=sin(w1*Ts*(n-1))+sin(w2*Ts*(n-1))+sin(w3*Ts*(n-1));</p><p> for p=(N+
88、1):(N+Plus)</p><p> sample(p)=0;%Add zero points.</p><p><b> end</b></p><p> xs=sample;%Return</p><p><b> end</b></p><p> ii)由
89、于只要求顯示幅度頻譜,所以刪去myFFT函數(shù)中繪制相位頻譜的命令,使它的最后部分修改如下:</p><p><b> 原來的:</b></p><p> function myFFT(N,x)</p><p> %This is a base-2 FFT function wrote by myself.</p><p
90、><b> ...</b></p><p> Amp=abs(x);%Acquire the amplification.</p><p> Phs=angle(x);%Acquire the phase angle (radian).</p><p> subplot(1,2,1);</p><p>
91、stem(lov,Amp,'.');xlabel('FFT k');ylabel('FFT Amplification');hold on;</p><p> %Plot the amplification.</p><p> subplot(1,2,2);</p><p> stem(lov,Phs,'
92、*');xlabel('FFT k');ylabel('FFT Phase Angle (radian)');hold off;</p><p><b> end</b></p><p><b> 修改后的:</b></p><p> function myFFT(N,x)&l
93、t;/p><p> %This is a base-2 FFT function wrote by myself.</p><p><b> ...</b></p><p> Amp=abs(x);%Acquire the amplification.</p><p> stem(lov,Amp,'.'
94、;);xlabel('FFT k');ylabel('FFT Amplification');</p><p> %Plot the amplification.</p><p><b> end</b></p><p> 命令窗口中的運(yùn)行及其結(jié)果:</p><p><b>
95、; 第(1)小題</b></p><p> >> x512=sampJune6(512,0);</p><p> >> x2048=sampJune6(2048,0);</p><p> >> myFFT(512,x512);</p><p> >> myFFT(2048,
96、x2048);</p><p><b> 第(2)小題</b></p><p> >> x32p1N=sampJune6(32,32*1);%32點采樣,補(bǔ)零N=32個,共64個數(shù)據(jù)點</p><p> >> x32p4N=sampJune6(32,32*4);%32點采樣,補(bǔ)零4N=128個,共160個數(shù)
97、據(jù)點</p><p> >> x32p8N=sampJune6(32,32*8);%32點采樣,補(bǔ)零8N=256個,共288個數(shù)據(jù)點</p><p> >> x32p16N=sampJune6(32,32*16);%32點采樣,補(bǔ)零16N=128個,共544個數(shù)據(jù)點</p><p> >> myFFT(32+32*1,
98、x32p1N);</p><p> >> myFFT(32+32*4,x32p4N);</p><p> >> myFFT(32+32*8,x32p8N);</p><p> >> myFFT(32+32*16,x32p16N);</p><p> 【分析】請注意,題目只要求繪制幅度頻譜。</
99、p><p><b> 第(1)小題:</b></p><p> 首先,由于采樣時間都不是原有信號周期的整數(shù)倍,兩個采樣方式對應(yīng)的頻譜均發(fā)生了泄漏。不過由于2048點采樣對應(yīng)的采樣時間較長,它頻譜泄漏的程度比512點采樣輕。</p><p> 其次,由于20 Hz的2048點采樣的頻率分辨率為20/2048=0.0098 Hz < 0.2
100、 Hz,因此放大頻譜圖之后我們可以看到4 Hz、4.02 Hz和5 Hz對應(yīng)的譜線,而512點采樣的頻率分辨率為20/512=0.039 Hz > 0.2 Hz,因此4 Hz和4.02 Hz對應(yīng)的譜線無法區(qū)分。</p><p><b> 第(2)小題:</b></p><p> 首先,由于采樣時間都不是原有信號周期的整數(shù)倍,頻譜均發(fā)生了泄漏。而且由于采樣時間
101、較短,頻譜泄漏比第(1)小題的兩個頻譜更加嚴(yán)重。</p><p> 其次,由于都是32點采樣,因此實際的頻率分辨率較低,無法區(qū)分4 Hz和4.02 Hz對應(yīng)的譜線。</p><p> 最后,雖然都是32點采樣,但由于補(bǔ)0個數(shù)的不同,各頻譜譜線間距各不相同。例如,補(bǔ)零最多的序列一共有544個數(shù)據(jù)點,因此譜線間距小。由此還可以得出結(jié)論:數(shù)據(jù)點個數(shù)越多,則頻譜越傾向于連續(xù)。</p>
102、;<p> 可見,當(dāng)采樣時間不是原信號周期整數(shù)倍而且采樣時間較短時,頻譜泄漏相當(dāng)嚴(yán)重的,所有的頻率上都有了幅值即能量,可見當(dāng)取樣信號的樣點數(shù)取得不夠時,原信號所攜帶的信息就不能被完全取得。而若將取樣信號補(bǔ)零,由圖可見信號的能量相應(yīng)的泄漏到了幾乎所有頻率上了,這樣所得的信號仍然嚴(yán)重失真,因此不能靠將信號補(bǔ)零這樣的方法來取得更精確的采樣信號。要想獲得不泄漏的頻譜,在采樣頻率不變的前提下,必須使采樣時間等于原信號周期的整數(shù)倍,
103、或者盡量延長采樣時間以減少泄漏。</p><p><b> 四、實驗體會</b></p><p> 4.1關(guān)于各個實驗的分析,請見第3部分每道題的末尾。</p><p> 4.2在Matlab中,數(shù)組的序號是從1開始的,這與信號處理時通常的序號起點(0)不一致。我在編程充分注意到了這個問題。</p><p> 4
104、.3由于Matlab進(jìn)行數(shù)值計算的過程中存在截斷誤差,所以最后算得的值并不是準(zhǔn)確值。例如,對一個復(fù)數(shù)z,即使f(z)的虛部為零,但由于截斷誤差的存在(特別是z的虛部為無窮小數(shù)時),最終f(z)值的虛部可能是一個極小的非零值,從而在顯示時出現(xiàn)“零虛部”(例如,2+0.0000i )。</p><p> 4.4通過利用軟件對離散信號的各種變換DTFT、DFT以及其快速算法FFT進(jìn)行計算,使得在實驗中比較難以實現(xiàn)的信
105、號分析過程(離散信號的采集和顯示都是比較困難的)在計算機(jī)計算中實現(xiàn),證明了理論的正確性,說明仿真計算是一種十分有效的輔助手段。</p><p> 4.5通過這次實驗和上次實驗《信號的采集與恢復(fù)》我知道了,要想盡量不失真地取得一個信號的頻譜(低混疊、低泄漏),應(yīng)該盡量滿足以下條件:</p><p> 使用的開關(guān)函數(shù)要盡量接近理想沖激串;</p><p> 采樣頻
106、率要高于原始信號的奈奎斯特頻率。對于頻譜不受限的信號,為了避免頻譜混疊,應(yīng)該使用低通濾波器進(jìn)行濾波;</p><p> 對于頻帶不受限的信號,抗混疊濾波器要盡量接近理想濾波器。</p><p> 采樣的持續(xù)時間最好能夠是原信號周期的整數(shù)倍,一避免頻譜泄漏。而當(dāng)不知道原信號的周期(或者周期不穩(wěn)定)時,就要通過延長采樣時間來盡量減少泄漏,從而突出原信號的譜線。</p><
107、;p> 當(dāng)信號混有白噪聲時,就更應(yīng)注意減少頻譜的泄漏和混疊,否則信號分析更加困難,甚至可能會使原信號被誤差“淹沒”。</p><p> 若原信號有多個頻率成分,應(yīng)該盡量提高采樣的頻率分辨率,以區(qū)分出更細(xì)微的頻率差異。</p><p> 4.6在實驗中,在計算2048點采樣時,初步體會到了FFT算法的優(yōu)越性。在我的計算機(jī)上,F(xiàn)FT算法的確比原始的DFT更快。不過由于采樣點數(shù)較少,
108、這一差別僅限于幾秒鐘。在采樣點更多時,F(xiàn)FT在速度上的優(yōu)越性應(yīng)該能進(jìn)一步突出。</p><p> 4.7實驗中遇到的問題及其解決:</p><p> 實驗中有些M文件代碼總是出錯。解決方法:重新檢查,在稿紙上演算,體會運(yùn)算過程。例如,Matlab數(shù)組序號起始位置(為1,而非C語言的0)的問題,就是這樣發(fā)現(xiàn)的。</p><p> 編程時對代碼不熟悉,使得思路比較
109、混亂。解決方法:畫流程圖,理清思路。對比較復(fù)雜的程序尤其如此。感到大一時C語言教學(xué)并未強(qiáng)調(diào)流程圖,這是一個教學(xué)中值得改進(jìn)的地方。C語言中,比起掌握運(yùn)算符優(yōu)先級,對流程圖思想的培養(yǎng)顯得更為重要。</p><p><b> 附錄:</b></p><p> 附錄A值得指出的是,在Matlab中,數(shù)組的序號是從1開始的(而在信號分析中習(xí)慣從0開始),我在上面編程時已考
110、慮到這一情況。例如,下面可以驗證DFT函數(shù)的正確性(順便也可以驗證FFT函數(shù))。</p><p><b> >> n=1:8;</b></p><p> >> xn=6*cos(pi*(n-1)/4);</p><p> >> DFT(8,xn);</p><p> 附錄B出
111、于興趣,我們還可以看看DFT和myFFT的運(yùn)行時間。</p><p> 為了不計繪圖,刪去DFT和myFFT的繪圖命令。通過Matlab命令窗口查看運(yùn)行時間。</p><p> ?。?)16(24)點采樣:</p><p> >> tic;n=(0:15);xs=sin(0.1*2*pi*n)+randn(size(n));DFT(16,xs);to
112、c;</p><p> Elapsed time is 0. seconds.</p><p> >> tic;n=(0:15);xs=sin(0.1*2*pi*n)+randn(size(n));myFFT(16,xs);toc;</p><p> Elapsed time is 0. seconds.</p><p>
113、?。?)2048(211)點采樣:</p><p> >> tic;n=(0:2047);xs=sin(0.1*2*pi*n)+randn(size(n));DFT(2048,xs);toc;</p><p> Elapsed time is 0. seconds.</p><p> >> tic;n=(0:2047);xs=sin(
114、0.1*2*pi*n)+randn(size(n));myFFT(2048,xs);toc;</p><p> Elapsed time is 0. seconds.</p><p> ?。?)8192(213)點采樣:</p><p> >> tic;n=(0:8191);xs=sin(0.1*2*pi*n)+randn(size(n));DFT
115、(8192,xs);toc;</p><p> Elapsed time is 8. seconds.</p><p> >> tic;n=(0:8191);xs=sin(0.1*2*pi*n)+randn(size(n));myFFT(8192,xs);toc;</p><p> Elapsed time is 0. seconds.</
116、p><p> ?。?)65536(216)點采樣:</p><p> >> tic;n=(0:65535);xs=sin(0.1*2*pi*n)+randn(size(n));DFT(65536,xs);toc;</p><p> Elapsed time is 2192. seconds.</p><p> >>
117、tic;n=(0:65535);xs=sin(0.1*2*pi*n)+randn(size(n));myFFT(65536,xs);toc;</p><p> Elapsed time is 4. seconds.</p><p> 測試環(huán)境配置:Matlab 2013a,Windows 7 Professional,Intel Centrino2雙核32位1.40 GHz,內(nèi)存3.0
118、 G。</p><p> 可見,在采樣點數(shù)較小時,可能由于反復(fù)賦值、變址等運(yùn)算,F(xiàn)FT算法的運(yùn)行速度較慢。</p><p> 而在采樣點數(shù)較大時,F(xiàn)FT算法在速度上的優(yōu)越性凸顯出來。例如在8192點采樣時,F(xiàn)FT算法運(yùn)行時間僅約為原始DFT算法的5.9%;而在65536點采樣時,原始DFT算法運(yùn)行時間達(dá)到了近37分鐘,而FFT算法運(yùn)行時間僅約4.4 s,為前者的0.2%,優(yōu)勢相當(dāng)明顯。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 傅里葉變換_離散時間傅里葉變換_離散傅里葉變換的關(guān)系
- 8_離散傅里葉變換與快速傅里葉變換.pdf
- 離散傅里葉變換(dft)
- 離散序列傅里葉變換習(xí)題
- 離散傅里葉變換dft及其快速算法fft
- 詳解快速傅里葉變換fft算法
- 基于dsp的快速傅里葉變換
- 離散傅里葉變換的圖解分析.dwg
- 離散傅里葉變換的圖解分析.dwg
- 離散傅里葉變換的圖解分析.dwg
- 解析傅里葉變換
- 傅里葉變換公式
- 離散傅里葉變換的圖解分析.dwg
- 傅里葉變換公式
- 基于dsp快速傅里葉變換程序設(shè)計
- 10738.高斯光束的傅里葉變換與分?jǐn)?shù)傅里葉變換
- 傅里葉變換(fft)詳解
- 常用傅里葉變換表
- 基于離散傅里葉變換的電參量測量.pdf
- 第五節(jié)快速傅里葉變換(fft)
評論
0/150
提交評論