天天看點

方波和頻譜仿真matlab,基于MATLAB仿真的連續信号頻譜分析.doc.doc

基于MATLAB仿真的連續信号頻譜分析.doc.doc

實驗十:基于MATLAB仿真的連續信号頻譜分析

一、實驗目的

1、學會運用MATLAB求連續時間信号的傅裡葉變換;

2、學會運用MATLAB求連續時間信号的頻譜圖。

二、實驗原理

1、周期信号的分解

根據傅裡葉級數的原理,任何周期信号都可以表示為三角級數的組合稱為f(t)的傅

合成波形所包含的諧波分量越多,除間斷點附近外,它越接近于原波形,在間斷點附近,即使合成的波形所含諧波次數足夠多,也仍存在約9%的偏【示例1】用正弦信号的疊加近似合成一個頻率為50Hz,幅度為3的MATLAB程式如下:

clear all;

fs=5000;

t=0:1/fs:0.1;

f0=50;sum=0;

subplot(211)

for n=1:2:9

plot(t,4/pi*1/n*sin(2*pi*n*f0*t),'k');

hold on;

end

title('信号疊加前');

subplot(212)

for n=1:2:9;

sum=sum+4/pi*1/n*sin(2*pi*n*f0*t);

end

plot(t,sum,'k')

10.1所示。

2、非周期信号的頻譜分析

信号的傅裡葉變換定義為

(.1)

傅裡葉反變換定義為

(.2)

信号的傅裡葉變換主要包括MATLAB符号運算和MATLAB數值分析兩種方法。

(1) MATLAB符号運算求解法

MATLAB符号數學工具箱提供了直接求解傅裡葉變換和傅裡葉反變換的函數fourier( )及ifourier( )。傅裡葉變換的語句格式分為三種。

F=fourier(f );表示符号函數f的Fourier變換,預設傳回是關于的函數。

F=fourier(f ,v);表示傳回函數F是關于符号對象v的函數,而不是預設的,即。

F=fourier(f ,u,v); 是對關于u的函數f進行變換,傳回函數F是關于v的函數,即。

類似的,傅裡葉反變換的語句格式也分為三種。

要注意的是,函數fourier( )及ifoureir( )都是接收由sym函數所定義的符号變量或者符号表達式。【2】用MATLAB符号運算求解法求單邊指數信号的傅裡葉變換。

解:MATLAB源程式為

>> ft=sym('exp(-2*t)*Heaviside(t)');

>> Fw=fourier(ft)

運作結果為

Fw =

1/(2+i*w)

(2) 連續時間信号的頻譜圖

信号f(t)的傅裡葉變換表達了信号在處的頻譜密度分布情況,這就是信号的傅裡葉變換的實體意義。一般是複函數,可以表示為。我們把與曲線分别稱為非周期信号的幅度頻譜和相位頻譜。

【3】用MATLAB指令繪制單邊指數信号幅度譜和相位譜。

解:MATLAB源程式為

ft=sym('exp(-2*t)*Heaviside(t)');

Fw=fourier(ft);

subplot(211)

ezplot(abs(Fw),[-2*pi,2*pi]),grid on

title('幅度譜')

phase=atan(imag(Fw)/real(Fw));

subplot(212)

ezplot(phase,[-2*pi,2*pi]),grid on

title('相位譜')

程式運作結果如圖.2所示。

(3)MATLAB數值計算求解法

Fourier( )和ifourier( )函數的一個局限性是,如果傳回函數中有諸如狄拉克函數等項,則用ezplot( )函數無法作圖。對某些信号求變換時,其傳回函數可能包含一些不能直接用符号表達的式子,甚至可能出現提示“未被定義的函數或變量”,因而也不能對其傳回函數作圖。此外,在很多實際情況中,盡管信号是連續的,但經過抽樣所獲得的信号則是離散的數值量,是以無法表示成符号表達式,此時不能應用Fourier( )函數對進行處理,而隻能用數值計算法來近似求解。下面介紹傅裡葉變換的數值計算法。

從傅裡葉變換定義出發,有

(3)

當足夠小時,上式的近似情況可以滿足實際需要。對于時限信号,或者在所研究的時間範圍内衰減到足夠小,上式可研究有限n的取值。假設是因果信号,則有

(4)

對(4)式的角頻率進行離散化,假設離散化後得到N個樣值,即

, (5)

是以有

采用行向量,用矩陣表示為

(6)

式(6)提供了用MATLAB實