基于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實