《信號與系統(tǒng)》實驗指導(dǎo)書.doc
《《信號與系統(tǒng)》實驗指導(dǎo)書.doc》由會員分享,可在線閱讀,更多相關(guān)《《信號與系統(tǒng)》實驗指導(dǎo)書.doc(40頁珍藏版)》請在裝配圖網(wǎng)上搜索。
《信號與系統(tǒng)》實驗指導(dǎo)書 黃劍航 編 莆田學(xué)院機電工程學(xué)院 2015年3月 目錄 實驗1 MATLAB在信號處理中的應(yīng)用基礎(chǔ).................................1 實驗2 連續(xù)時間信號在MATLAB中的表示 ..............................6 實驗3 連續(xù)時間信號在MATLAB中的運算 .............................12 實驗4 傅里葉變換及其性質(zhì).........................................................18 實驗5 信號抽樣及抽樣定理………………….............................24 實驗6 連續(xù)時間LTI系統(tǒng)的時域分析 .......................................30 前言 MATLAB是矩陣實驗室(Matrix Laboratory)的簡稱,它是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分?! ? MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MathWorks公司也吸收了像Maple等軟件的優(yōu)點,使MATLAB成為一個強大的數(shù)學(xué)軟件。MATLAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。 MATLAB在信號與系統(tǒng)中的應(yīng)用主要包括符號運算和數(shù)值計算仿真分析。由于信號與系統(tǒng)課程的許多內(nèi)容都是基于公式演算,而MATLAB借助符號數(shù)學(xué)工具箱提供的符號運算功能,能基本滿足信號與系統(tǒng)課程的需要。例如解微分方程、傅立葉正反變換、拉普拉斯正反變換和Z正反變換等。MATLAB在信號與系統(tǒng)中的另一主要應(yīng)用是數(shù)值計算與仿真分析,主要包括函數(shù)波形繪制、函數(shù)運算、沖激響應(yīng)仿真分析、信號的時域分析、信號的頻譜分析等內(nèi)容。數(shù)值計算仿真分析可以幫助學(xué)生更深入地理解信號與系統(tǒng)的理論知識,并為將來使用MATLAB進行信號處理領(lǐng)域的各種分析和實際應(yīng)用打下基礎(chǔ)。 實驗報告要求如下: 1. 具體格式參照“莆田學(xué)院機電工程學(xué)院實驗報告”格式。 2. 注意實驗報告要求分析組織有條理,截圖美觀,結(jié)論正確。 實驗1 MATLAB在信號處理中的應(yīng)用基礎(chǔ) 1. 實驗?zāi)康? 熟悉MATLAB工作環(huán)境和基本操作;熟悉MATLAB數(shù)組及矩陣運算;學(xué)習(xí)函數(shù)的編制,掌握MATLAB的編程應(yīng)用。通過不同的程序結(jié)構(gòu)和不同的實際編程問題,掌握MATLAB的編程方法。 2. 實驗內(nèi)容 2.1假設(shè)x=3,y=4。利用MTLAB 計算下列表達(dá)式:, 要求: (1)在命令窗口直接輸入,得到運算結(jié)果; (2)編寫M文檔并在命令窗口執(zhí)行,然后用工作空間平臺查看有哪些變量在當(dāng)前工作區(qū)。 2.2 一小球從空中下落的位移公式為: ,利用MATLAB 計算小球在t=5s 時的位置,已知:. 2.3計算函數(shù)在為如下取值時候的函數(shù)值,取4.9, 3.2, 100, 1.5, 9.75, 2.56,16, 4.9, 10。 2.4 確定下列數(shù)組的大小,通過whos 或工作空間窗口(The workspace browser)檢查你的答案。注意在本練習(xí)中后面的數(shù)組可能要用到前面數(shù)組的定義。 (1) u=[10, 20, 10+20] (2) v=[-1;20;3] (3) w=[1 0 -9;2 -2 0;1 2 3] (4) x=[u v] (5) y(3,3)=-7 (6) z=[zeros(4,1) ones(4,1) zeros(1,4)] (7) v(4)=x(2,1) 2.5 執(zhí)行完2.4的所有題目后,w(2,1)的值是多少? x(2,1)的值是多少?y(2,1)的值是多少? 2.6 c 數(shù)組的定義如下,寫出下面子數(shù)組的內(nèi)容。 c = 1.1000 -3.2000 3.4000 0.6000 0.6000 1.1000 -0.6000 3.1000 1.3000 0.6000 5.5000 0 (1) c(2,:) (2) c(:,end) (3) c(1:2,2:end) (4) c(6) (5) c(4:end) (6) c(1:2,2:4) (7) c([1 4],2) (8) c([2 2],[3 3]) 2.7 當(dāng)賦值語句執(zhí)行后,下列數(shù)組的內(nèi)容是多少? (1) a=[1 2 3; 4 5 6; 7 8 9]; a([3 1],:)=a([1 3],:); (2) a=[1 2 3; 4 5 6; 7 8 9]; a([1 3],:)=a([2 2],:); (3) a=[1 2 3; 4 5 6; 7 8 9]; a=a([2 2],:); 2.8 假設(shè)a,b,c 和d 的定義如下: 分別運行出下列表達(dá)式的運算結(jié)果,并思考點乘和乘法的不同。 (1) a + b (2) a .* c (3) a * b (4) a * c (5) a + c (6) a + d (7) a .* d (8) a * d 2.9一個程序?qū)嵗龑W(xué)習(xí): (溫度轉(zhuǎn)換)設(shè)計一個MATLAB 程序,讀取一個華氏溫度的輸入,輸出開爾文溫度。 華氏溫度和開爾文溫度的轉(zhuǎn)換關(guān)系式可在物理學(xué)課本中找到。其關(guān)系式為: 在物理學(xué)參考書中舉了一些例子,我們可以用來檢驗我們程序是否正確。例如 我們設(shè)計程序的步驟如下 : (1)提示用戶鍵入華氏溫度值 (2)讀取輸入值 (3)通過關(guān)系式轉(zhuǎn)換為開氏溫度 (4)輸出結(jié)果,結(jié)束 我們將會用input 函數(shù)輸入華氏溫度,用fprintf 函數(shù)輸出結(jié)果。 % Script file:temp_conversion.m % % Purpose: % To convert an input temperature from degrees Fahrenheit to % an output temperature in kelvins. % % Record of revisions: % Date Programmer Description of change % ==== ========= ================ % 12/01/97 S.J.Chapman Original code % %Define variables: % temp_f --Temperature in degrees Fahrenheit % temp_k --Temperature in kelvins %Prompt the user for the input temperature. temp_f=input(Enter the temperature in degrees Fahrenheit:); %Converttokelvins. temp_k=(5/9)*(temp_f-32)+273.15; %Writeouttheresult. fprintf(%6.2f degrees Fahrenheit = %6.2f kelvins.\n,... temp_f,temp_k); 我們輸入上面的例子中的華氏溫度值,以檢測程序的正確性。注意用戶的輸入值已用黑 體字標(biāo)出。 >> temp_conversion Enter the temperature in degrees Fahrenheit:212 212.00 degrees Fahrenheit = 373.15 kelvins. >> temp_conversion Enter the temperature in degrees Fahrenheit:-110 -110.00 degrees Fahrenheit = 194.26 kelvins. 這個結(jié)果和物理教科書的結(jié)果相同。 2.10編寫一個程序,計算出坐標(biāo)系中用戶指定兩點(X1,Y1)和(X2,Y2)之間的距離。要求有輸入、輸出及其相關(guān)提示。 2.11雙曲余弦的定義如下:, 編寫一個程序,計算出用戶指定的x 的值對應(yīng)的雙曲余弦值。用這個程序計算雙曲余弦值的若干值,并和MATLAB 中的內(nèi)建函數(shù)cosh(x)得到的值比較看看是否完全相同。并用MATLAB 打印出這個函數(shù)的圖象。 2.12 電子工程:負(fù)載的最大輸出功率一個內(nèi)阻Rs=50Ω,電動勢V=120V 的電源驅(qū)動一個負(fù)載RL。當(dāng)RL 為多少時,RL 的功率最大?在這種情況下,功率為多少?畫以RL 為自變量的RL 功率圖。 2.13利用公式求的近似值,直到最后一項的絕對值小于為止。 2.14 Fibonacci(斐波納契)序列的元素滿足Fibonacci 規(guī)則: 且;現(xiàn)要求該序列中第一個大于20000 的元素,并指明該元素是序列的第幾項。 2.15在田徑比賽中,一個身高為一米八零的鉛球運動員,大概以多大的角度(和水平方向夾角)推鉛球,才能使鉛球推得最遠(yuǎn),并求出最遠(yuǎn)距離。不計空氣阻力,假設(shè)鉛球出手點和運動員高度相等,且鉛球出手瞬間初始速度大小為14m/s,重力加速度取g=10m/s2。 2.16 打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如153是一個水仙花數(shù),滿足153=1^3+5^3+3^3。 2.17 有一個函數(shù): ,寫一程序,輸入x,輸出y值。 2.18 輸入3個整數(shù),要求按大小輸出。 2.19 編寫一個MATLAB 程序,要求輸入圓柱體的半徑和高,然后輸出體積。 3. 思考 3.1 MATLAB 的命令窗口的作用是什么? 3.2 列出幾種不同的得到MATLAB 幫助的方法。 3.3 什么是工作區(qū)?在同一工作區(qū)內(nèi),你如何決定它里面存儲了什么? 3.4 你怎樣清空MATLAB 工作區(qū)內(nèi)的內(nèi)容? 3.5 數(shù)組,矩陣,向量有什么區(qū)別? 3.6 回答關(guān)于下列矩陣的有關(guān)問題 (1)C 的大小是多少? (2)C(2,3)的值是多少? (3)列出值為0.6 的元素的下標(biāo) 3.7 腳本文件和函數(shù)文件的區(qū)別是什么? 實驗2 連續(xù)時間信號在MATLAB中的表示 1. 實驗?zāi)康? 學(xué)會運用MATLAB表示常用連續(xù)時間信號的方法;觀察并熟悉這些信號的波形和特性。 2. 實驗原理 在某一時間區(qū)間內(nèi),除若干個不連續(xù)點外,如果任意時刻都可以給出確定的函數(shù)值,則稱該信號為連續(xù)時間信號,簡稱為連續(xù)信號。從嚴(yán)格意義上講,MATLAB數(shù)值計算的方法并不能處理連續(xù)時間信號。然而,可利用連續(xù)信號在等時間間隔點的取樣值來近似表示連續(xù)信號,即當(dāng)取樣時間間隔足夠小時,這些離散樣值能夠被MATLAB處理,并且能較好地近似表示連續(xù)信號。 MATLAB提供了大量生成基本信號的函數(shù)。比如常用的指數(shù)信號、正余弦信號等都是MATLAB的內(nèi)部函數(shù)。為了表示連續(xù)時間信號,需定義某一時間或自變量的范圍和取樣時間間隔,然后調(diào)用該函數(shù)計算這些點的函數(shù)值,最后畫出其波形圖。 3. 實例分析 3.1 典型信號的MATLAB表示 (1)實指數(shù)信號 實指數(shù)信號的基本形式為。式中,為實數(shù)。當(dāng)時,實指數(shù)信號隨時間按指數(shù)式增長;當(dāng)時,實指數(shù)信號隨時間按指數(shù)式衰減;當(dāng)時候,則轉(zhuǎn)化為直流信號。MATLAB中用exp函數(shù)來表示實指數(shù)信號,其語句格式為: 例1 用MATLAB命令產(chǎn)生單邊衰減指數(shù)信號,并繪出時間的波形圖。 解:MATLAB源程序為: clear;clc; K = 2; a = -1.5; t = 0:0.01:3; ft = K*exp(a*t); plot(t,ft);grid on axis([0,3,0,2.2]); title(單邊指數(shù)衰減信號); (2)正弦信號 正弦信號的基本形式為或者。其中K 是振幅;是角頻率;是初相位。這三個參數(shù)稱為正弦信號的三要素。MATLAB中可用sin或者cos函數(shù)來表示正弦信號,其語句格式為: 例2 用MATLAB命令產(chǎn)生正弦信號,并繪出時間的波形圖。 解:MATLAB源程序為: clear;clc; K = 2; w = 2*pi; phi = pi/4; t = 0:0.01:3; ft = K*sin(w*t+phi); plot(t,ft);grid on axis([0,3,-2.2,2.2]); title(正弦信號); 圖1 單邊指數(shù)衰減信號 圖2 正弦信號 (3)抽樣信號 抽樣信號的基本形式為,在MATLAB中用與類似的函數(shù)表示,定義為。 可以看出,函數(shù)與沒有本質(zhì)的區(qū)別,只是在時間尺度上不同而已。 例3 用MATLAB命令產(chǎn)生抽樣信號,并繪出時間為的波形圖。 解:MATLAB源程序為: clear;clc; t = -6*pi: pi/100: 6*pi; ft = sinc(t/pi); plot(t,ft);grid on axis([-20,20,-0.5,1.2]); title(抽樣信號); 圖3 抽樣信號 (4)矩形脈沖信號 矩形脈沖信號在MATLAB中可用rectpuls函數(shù)產(chǎn)生,其語句格式為: 該函數(shù)用于產(chǎn)生一個幅度為1、寬度為width,且以t=0為對稱軸的矩形脈沖信號,width的默認(rèn)值為1。 例4 用MATLAB命令畫出下列矩形脈沖信號的波形圖。 解:根據(jù)所定義的矩形脈沖信號,定義的矩形脈沖寬度為1,脈沖的中心位置相對于縱軸向右移動了0.5。因此,其MATLAB源程序為: clear;clc; t = -0.5: 0.01: 3; t0 = 0.5; width = 1; ft = 2* rectpuls(t-t0, width); plot(t,ft);grid on axis([-0.5,3,-0.2,2.2]); title(矩形脈沖信號); 圖4 矩形脈沖信號 周期性矩形波信號或方波在MATLAB中可用square函數(shù)產(chǎn)生,其語句格式為: y=square(t,DUTY) 該函數(shù)用于產(chǎn)生一個周期為,幅值為的周期性方波信號,其中,DUTY參數(shù)用來表示信號的占空比DUTY%,即在一個周期內(nèi)脈沖寬度(正值部分)與脈沖周期比值。占空比默認(rèn)值為0.5。 例5 用MATLAB命令產(chǎn)生頻率為10Hz,占空比為30%的周期方波信號。 解:MATLAB源程序為: clear;clc; t = 0: 0.001: 0.3; y = square(2*pi*10*t, 30); plot(t,y);grid on axis([0,0.3,-1.2,1.2]); title(周期方波信號); 圖5 周期方波信號 還有非周期的三角波脈沖可以用tripuls函數(shù),周期三角波(鋸齒波)可以用sawtooth函數(shù)實現(xiàn)。同學(xué)們可以通過MATLAB help自學(xué),或者上網(wǎng)搜索及其他途徑學(xué)習(xí)。 3.2 單位階躍信號的MATLAB表示 單位階躍信號是信號分析中的基本信號之一,在信號與系統(tǒng)分析中有著十分重要的意義,常用于簡化信號的時域數(shù)學(xué)表示。例如,表示分段函數(shù)信號、時限信號和因果信號等。單位階躍信號用符號表示,定義為: 例6 用MATLAB命令產(chǎn)生單位階躍信號。 解:MATLAB源程序為: clear;clc; t = -1: 0.01: 5; ft = (t >=0 ); plot(t,ft);grid on axis([-1,5,-0.5,1.5]); title(單位階躍信號); 圖6 單位階躍信號 此外,也可以在MATLAB的工作目錄下創(chuàng)建uCT的M文件,其MATLAB源文件為: function f = uCT(t) f = (t>=0); 保存后,就可調(diào)用該函數(shù),并運用plot命令來繪制單位階躍信號的波形。例如,圖6中波形也可以用如下代碼實現(xiàn): clear;clc; t = -1: 0.01: 5; ft = uCT(t); plot(t,ft);grid on axis([-1,5,-0.5,1.5]); title(單位階躍信號); 注意,在此定義的uCT函數(shù)是階躍信號數(shù)值表示方法,因此在數(shù)值計算機中我們將調(diào)用uCT函數(shù)。而在MATLAB的MAPLE內(nèi)核中,將Heaviside函數(shù)定義為階躍信號符號表達(dá)式,在符號運算過程中,若要調(diào)用它必須用sym定義后,才能實現(xiàn)。例如,還可用下面的命令會出階躍信號,即: clear;clc; y=sym(Heaviside(t)); % 定義符號表達(dá)式 ezplot(y,[-1,5]).grid on 在表示分段函數(shù)信號、時限信號時,經(jīng)常用到延時的單位階躍信號,對于延時T的單位階躍信號,可以用 uCT(t-T)來表示。 例7 用MATLAB命令實現(xiàn)幅度為1、寬度為1的門函數(shù)。 解:MATLAB源程序為: clear;clc; t = -1: 0.01: 1; ft = uCT(t+0.5)-uCT(t-0.5); plot(t,ft);grid on axis([-1,1 -0.2,1.2]); title(門函數(shù)); 圖 圖7 門函數(shù)波形 4. 實驗內(nèi)容 4.1 利用MATLAB命令畫出下列連續(xù)信號的波形圖。 (1) (2) (3) (4) 4.2 利用MATLAB命令產(chǎn)生幅度為1、周期為1、占空比為0.5的一個周期矩形脈沖信號。T=1;f=1/T=1 4.3 利用MATLAB命令畫出如下信號的實部、虛部、模和幅角。 cos(pi/4*t)+jsin(pi/4*t) 5. 問題與思考 階躍信號函數(shù)中語句ft = (t >=0 )的含義。 實驗3 連續(xù)時間信號在MATLAB中的運算 1. 實驗?zāi)康? 學(xué)會運用MATLAB進行連續(xù)信號的時移、反折和尺度變換;學(xué)會運用MATLAB進行連續(xù)信號的相加、相乘運算;學(xué)會運用MATLAB數(shù)值計算方法求連續(xù)信號的卷積。 2. 實驗原理 2.1信號的時移、反折和尺度變換 信號的時移、反折和尺度變換是針對自變量時間而言的,其數(shù)學(xué)表達(dá)式與波形變換之間存在一定的變換規(guī)律。 信號的時移就是將信號數(shù)學(xué)表達(dá)式中的用替換,其中為正實數(shù)。因此,波形的時移變換是將原來的波形在時間軸上向左或者向右移動。為波形向左移動;為波形向右移動。信號的反折就是將表達(dá)式中的自變量用替換,即變換后的波形是原波形的y軸鏡像。信號的尺度變換就是將表達(dá)式中的自變量用替換,其中,為正實數(shù)。對應(yīng)于波形的變換,則是將原來的的波形以原點為基準(zhǔn)壓縮()至原來的,或者擴展()至原來的。 上述可以推廣到的情況。 2.2 MATLAB數(shù)值計算法求連續(xù)時間信號的卷積 用MATLAB分析連續(xù)時間信號,可以通過時間間隔取足夠小的離散時間信號的數(shù)值計算方法來實現(xiàn)。可調(diào)用MATLAB中的conv( )函數(shù)近似地數(shù)值求解連續(xù)信號的卷積積分。如果對連續(xù)時間信號和進行等時間間隔(足夠?。┚鶆虺闃?,則和分別變?yōu)殡x散序列和。其中為整數(shù)。當(dāng)足夠小時,和即為連續(xù)時間信號和。因此連續(xù)信號的卷積積分運算轉(zhuǎn)化為: 采用數(shù)值計算法,只求當(dāng)時卷積積分的值,其中,為整數(shù),即 其中,實際就是離散序列和的卷積和。當(dāng)足夠小時,就是卷積積分的結(jié)果,從而連續(xù)時間信號 上式表明通過MATLAB實現(xiàn)連續(xù)信號和的卷積,可以利用各自抽樣后的離散時間序列的卷積再乘上抽樣間隔。抽樣間隔越小,誤差也就越小。 3. 實例分析 例1 已知信號,試用MATLAB命令畫出、、、的波形圖。 解:根據(jù)已知信號,先建立函數(shù)文件,即在MATLAB的工作目錄下創(chuàng)建funct1.m文件,MATLAB源程序為: function f = funct1(t) f=uCT(t+2)-uCT(t)+(-t+1).*(uCT(t)-uCT(t-1)); 然后,可以調(diào)用上述函數(shù)來繪制所求的信號波形。程序運行完,產(chǎn)生如圖1所示的波形。MATLAB源程序為: clear;clc; t = -2:0.01:4; ft1 = funct1(t-2); ft2 = funct1(3*t); ft3 = funct1(-t); ft4 = funct1(-3*t-2); subplot(221) plot(t,ft1);grid on title(f(t-2)); axis([-2 4 -0.5 2]); subplot(222) plot(t,ft2);grid on title(f(3t)); axis([-2 4 -0.5 2]); subplot(223) plot(t,ft3);grid on title(f(-t)); axis([-2 4 -0.5 2]); subplot(224) plot(t,ft4);grid on title(f(-3t-2)); axis([-2 4 -0.5 2]); 圖1 f(t-2),f(3t),f(-t),f(-3t-2)波形圖 例2 用MATLAB數(shù)值計算分析法求信號與的卷積積分。 解:因為是一個持續(xù)時間無限長的信號,而計算機數(shù)值計算不可能計算真正的無限長時間信號,所以在進行的抽樣離散化時,所取的時間范圍讓衰減到足夠小就可以了,本例中取。MATLAB源程序為: clear;clc; dt = 0.01; t = -1:dt:2.5; f1 = uCT(t)- uCT(t-2); f2 = exp(-3*t).*uCT(t); f = conv(f1,f2)*dt; n =length(f); tt = (0:n-1)*dt-2;(tt從-2開始) subplot(221), plot(t,f1),grid on; axis([-1, 2.5, -0.2,1.2]); title(f1(t)); xlabel(t); subplot(222), plot(t,f2),grid on; axis([-1, 2.5, -0.2,1.2]); title(f2(t)); xlabel(t); subplot(212), plot(tt,f),grid on; title(f(t)=f1(t)*f2(t)); xlabel(t); 程序運行后,產(chǎn)生如圖2所示的波形。 圖2 例2的卷積結(jié)果 由于和的時間范圍都是從開始,所以卷積結(jié)果的時間范圍從開始,增量還是取樣間隔,這就是上面MATLAB語句tt = (0:n-1)*dt-2的由來。 對于時限信號的卷積運算,還可以利用MATLAB中的function命令建立一個實用函數(shù)來求卷積。例如,可以建立連續(xù)時間信號卷積運算的函數(shù)ctsconv.m,其MATLAB源程序為: function [f,t] = ctsconv(f1,f2,t1,t2,dt) f = conv(f1,f2); f = f*dt; ts = min(t1) +min(t2); te = max(t1)+max(t2); t = ts:dt:te; subplot(221) plot(t1,f1); grid on axis([ min(t1), max(t1), min(f1)-abs(min(f1)*0.2), max(f1)+abs(max(f1)*0.2) ]) title(f1(t));xlabel(t); subplot(222) plot(t2,f2); grid on axis([ min(t2), max(t2), min(f2)-abs(min(f2)*0.2), max(f2)+abs(max(f2)*0.2) ]) title(f2(t));xlabel(t); subplot(212) plot(t,f); grid on axis([ min(t), max(t), min(f)-abs(min(f)*0.2), max(f)+abs(max(f)*0.2) ]) title(f(t)=f1(t)*f2(t));xlabel(t); 對于例2,可以用上面定義的ctsconv函數(shù)求的,MATLAB源程序為: clear;clc; dt = 0.01; t1 = -1:dt:2.5; f1 = uCT(t1)- uCT(t1-2); t2 = t1; f2 = exp(-3*t2).*uCT(t2); [t,f] = ctsconv(f1,f2,t1,t2,dt); 程序運行后,可獲得和例2相同的波形結(jié)果。 4. 實驗內(nèi)容 4.1 試用MATLAB命令繪制信號的波形圖。 4.2 已知信號,畫出、、、的波形。 4.3 求信號與 的卷積結(jié)果,并畫出和的波形。 4.4 求信號與自身的卷積結(jié)果,并畫出和的波形。 5. 問題與思考 MATLAB運算符中 .*和 * 的區(qū)別?可結(jié)合例子說明。(實驗1和實驗2都有碰到的) 實驗4 傅里葉變換及其性質(zhì) 1. 實驗?zāi)康? 學(xué)會運用MATLAB求連續(xù)時間信號的傅里葉(Fourier)變換;學(xué)會運用MATLAB求連續(xù)時間信號的頻譜圖;學(xué)會運用MATLAB分析連續(xù)時間信號的傅里葉變換的性質(zhì)。 2. 實驗原理及實例分析 2.1 傅里葉變換的實現(xiàn) 信號的傅里葉變換定義為: , 傅里葉反變換定義為:。 信號的傅里葉變換主要包括MATLAB符號運算和MATLAB數(shù)值分析兩種方 法,下面分別加以探討。同時,學(xué)習(xí)連續(xù)時間信號的頻譜圖。 2.1.1 MATLAB符號運算求解法 MATLAB符號數(shù)學(xué)工具箱提供了直接求解傅里葉變換與傅里葉反變換的函 數(shù)fourier( )和ifourier( )。Fourier變換的語句格式分為三種。 (1) F=fourier(f,):它是符號函數(shù)f的Fourier變換,默認(rèn)返回是關(guān)于的函數(shù)。 (2) F=fourier(f,v):它返回函數(shù)F是關(guān)于符號對象v的函數(shù),而不是默認(rèn)的,即。 (3) F=fourier(f,u,v):是對關(guān)于u的函數(shù)f進行變換,返回函數(shù)F是關(guān)于v的函數(shù),即。 傅里葉反變換的語句格式也分為三種。 (1) f=ifourier(F):它是符號函數(shù)F的Fourier反變換,獨立變量默認(rèn)為,默認(rèn)返回是關(guān)于x的函數(shù)。 (2) f=ifourier(F,u):它返回函數(shù)f是u的函數(shù),而不是默認(rèn)的x。 (3) f=ifourier(F,u,v):是對關(guān)于v的函數(shù)F進行反變換,返回關(guān)于u的函數(shù)f。 值得注意的是,函數(shù)fourier( )和ifourier( )都是接受由sym函數(shù)所定義的符號 變量或者符號表達(dá)式。 例1 用MATLAB符號運算求解法求單邊指數(shù)信號的傅里葉變換。 解:MATLAB源程序為: ft = sym(exp(-2*t)*Heaviside(t)); Fw = fourier(ft) 運行結(jié)果為:Fw = 1/(2+i*w) 例2 用MATLAB符號運算法求的傅里葉逆變換 解:MATLAB源程序為: ft = sym(exp(-2*t)*Heaviside(t)); Fw = fourier(ft) 運行結(jié)果為:ft = 1/2*exp(-t)*heaviside(t)+1/2*exp(t)*heaviside(-t) 2.1.2 連續(xù)時間信號的頻譜圖 信號的傅里葉變換表達(dá)了信號在處的頻譜密度分布情況,這就 是信號的傅里葉變換的物理含義。一般是復(fù)函數(shù),可以表示成 。與曲線分別稱為非周期信號的幅度頻譜與相位頻譜,它們都是頻率的連續(xù)函數(shù),在形狀上與相應(yīng)的周期信號頻譜包絡(luò)線相同。非周期信號的頻譜有兩個特點,密度譜和連續(xù)譜。要注意到,采用fourier()和ifourier() 得到的返回函數(shù),仍然是符號表達(dá)式。若需對返回函數(shù)作圖,則需應(yīng)用ezplot()繪圖命令。 例3 用MATLAB命令繪出例1中單邊指數(shù)信號的幅度譜和相位譜。 解:MATLAB源程序為 ft = sym(exp(-2*t)*Heaviside(t)); Fw = fourier(ft); subplot(211) ezplot(abs(Fw));grid on title(幅度譜) phase = atan(imag(Fw)/real(Fw)); subplot(212) ezplot(phase);grid on title(相位譜) 圖1 單邊指數(shù)信號的幅度譜和相位譜 2.1.3 MATLAB數(shù)值計算求解法 fourier( )和ifourier( )函數(shù)的一個局限性是,如果返回函數(shù)中有諸如單位沖激函數(shù)等項,則用ezplot()函數(shù)無法作圖。對某些信號求變換時,其返回函數(shù)可能包含一些不能直接用符號表達(dá)的式子,因此不能對返回函數(shù)作圖。此外,在很多實際情況中,盡管信號是連續(xù)的,但經(jīng)過抽樣所獲得的信號則是多組離散的數(shù)值量,因此無法表示成符號表達(dá)式,此時不能應(yīng)用fourier()函數(shù)對f(n)進行處理,而只能用數(shù)值計算方法來近似求解。 從傅里葉變換定義出發(fā)有, 當(dāng)足夠小時,上式的近似情況可以滿足實際需要。對于時限信號,或者在所研究的時間范圍內(nèi)讓衰減到足夠小,從而近似地看成時限信號,則對于上式可以考慮有限n的取值。假設(shè)是因果信號,則有 傅里葉變換后在域用MATLAB進行求解,對上式的角頻率進行離散化。假設(shè)離散化后得到N個樣值,即 -1, 因此有 。采用行向量,用矩陣表示為 。其要點是要正確生成的M個樣本向量與向量。當(dāng)足夠小時,上式的內(nèi)積運算(即相乘求和運算)結(jié)果即為所求的連續(xù)時間信號傅里葉變換的數(shù)值解。 例4 用MATLAB數(shù)值計算法求三角脈沖幅度譜。三角脈沖的數(shù)學(xué)表達(dá)式如下: 解:MATLAB源程序為: dt = 0.01; t = -4:dt:4; ft = (t+4 )/2.*uCT(t+4)-t.*uCT(t)+(t-4)/2.*uCT(t-4); N = 2000; k = -N:N; W = 2*pi*k/((2*N+1)*dt); F = dt * ft*exp(-j*t*W); plot(W,F), grid on axis([-pi pi -1 9]); xlabel(W), ylabel(F(W)) title(amplitude spectrum); 圖2 三角脈沖信號的幅度譜 2.2 傅里葉變換的性質(zhì) 傅里葉變換的性質(zhì)包含了豐富的物理意義,并且揭示了信號的時域和頻域的 關(guān)系。熟悉這些性質(zhì)成為信號分析研究工作中最重要的內(nèi)容之一。 2.2.1 尺度變換特性 傅里葉變換的尺度變換特性為:若,則有,其 中,a為非零實常數(shù)。 例5 設(shè)矩形信號,用MATLAB命令繪出該信號及其 頻譜圖。當(dāng)信號的時域波形擴展為原來的2倍,或壓縮為原來的1/2時,則分別得到和,用MATLAB命令繪出和的頻譜圖,并加以分析比較。 解:采用符號運算法求解,并分析結(jié)果。MATLAB源程序為: ft1 = sym(Heaviside(t+1/2)-Heaviside(t-1/2)); subplot(321); ezplot(ft1,[-1.5 1.5]),grid on Fw1 = simplify(fourier(ft1)); subplot(322); ezplot(abs(Fw1),[-10*pi 10*pi]), grid on axis([-10*pi 10*pi -0.2 2.2]); ft2 = sym(Heaviside(t/2+1/2)-Heaviside(t/2-1/2)); subplot(323); ezplot(ft2,[-1.5 1.5]), grid on Fw2 = simplify(fourier(ft2)); subplot(324); ezplot(abs(Fw2),[-10*pi 10*pi]),grid on axis([-10*pi 10*pi -0.2 2.2]); ft3 = sym(Heaviside(2*t+1/2)-Heaviside(2*t-1/2)); subplot(325); ezplot(ft3,[-1.5 1.5]), grid on Fw3 = simplify(fourier(ft3)); subplot(326); ezplot(abs(Fw3),[-10*pi 10*pi]),grid on axis([-10*pi 10*pi -0.2 2.2]); 2.2.2 頻移特性 傅里葉變換的頻移特性為:若,則有。頻 移技術(shù)在通信系統(tǒng)中得到廣泛應(yīng)用,諸如調(diào)幅變頻等過程都是在頻譜搬移的基礎(chǔ)上完成的。頻移的實現(xiàn)原理是將信號乘以載波信號或,從而完成頻譜的搬移,即 例6 閱讀并運行如下程序段,并觀察信號調(diào)制前后的頻譜。 ft1 = sym(4*(Heaviside(t+1/4)-Heaviside(t-1/4))); Fw1 = simplify(fourier(ft1)); subplot(121); ezplot(abs(Fw1),[-24*pi 24*pi]),grid on axis([-24*pi 24*pi -0.2 2.2]); title(矩形信號頻譜); ft2 = sym(4*cos(2*pi*6*t)*(Heaviside(t+1/4)-Heaviside(t-1/4))); Fw2 = simplify(fourier(ft2)); subplot(122); ezplot(abs(Fw2),[-24*pi 24*pi]),grid on axis([-24*pi 24*pi -0.2 2.2]); title(矩形調(diào)制信號頻譜); 3. 實驗內(nèi)容 3.1 試用MATLAB命令求下列信號的傅里葉變換,并繪出其幅度譜和相位譜。 (1) (2) 3.2 試用MATLAB命令求下列信號的傅里葉反變換,并繪出其時域信號圖。 (1) (2) 3.3 試用MATLAB數(shù)值計算方法求門信號的傅里葉變換,并畫出其頻譜圖。 門信號即,其中。 3.4 已知兩個門信號的卷積為三角波信號,試用MATLAB命令驗證傅里葉變換 的時域卷積定理。 4. 問題與思考 傅里葉變換的其他性質(zhì)可以用類似的方法加以驗證,試舉一例,說明你驗證過程的思路。 實驗5 信號抽樣及抽樣定理 1. 實驗?zāi)康? 本實驗是綜合性實驗,實驗?zāi)康闹饕獮椋簩W(xué)會運用MATLAB完成信號抽樣及對抽樣信號的頻譜進行分析;學(xué)會運用MATLAB改變抽樣間隔,觀察抽樣后信號的頻譜變化;學(xué)會運用MATLAB對抽樣后的信號進行重建。進一步加深對信號采樣和重建過程的理解。 2. 實驗原理及實例分析 2.1 信號抽樣 信號抽樣是連續(xù)時間信號分析向離散時間信號、連續(xù)信號處理向數(shù)字信號處 理的第一步,廣泛應(yīng)用于實際的各類系統(tǒng)中。所謂信號抽樣,也稱為取樣或采樣,就是利用抽樣脈沖序列從連續(xù)信號中抽取一系列的離散樣值,通過抽樣過程得到的離散樣值信號稱為抽樣信號,用表示。從數(shù)學(xué)上講,抽樣過程就是抽樣脈沖和原連續(xù)信號相乘的過程,即: 因此可以用傅里葉變換的頻移卷積性質(zhì)來求抽樣信號的頻譜。常用的抽樣脈沖序列有周期矩形脈沖序列和周期沖激脈沖序列。 假設(shè)原連續(xù)信號的頻譜為,即;抽樣脈沖是一個周期信號,它的頻譜為: 其中,為抽樣角頻率,為抽樣間隔。因此,抽樣信號的頻譜為: 上式表明,信號在時域被抽樣后,它的頻譜是原連續(xù)信號的頻譜以抽樣角頻率為間隔周期的延拓,即信號在時域抽樣或離散化,相當(dāng)于頻域周期化。在頻譜的周期重復(fù)過程中,其頻譜幅度受抽樣脈沖序列的傅里葉加權(quán),即被加權(quán)。 假設(shè)抽樣信號為周期沖激脈沖序列,即: 因此,沖激脈沖序列抽樣后信號的頻譜為: 可以看出,是以為周期等幅地重復(fù)。 例1 已知升余弦脈沖信號為,,參數(shù) 用MATLAB編程,實現(xiàn)該信號經(jīng)沖激脈沖抽樣后得到的抽樣信號及其頻譜。 解:升余弦脈沖信號的頻譜大部分集中在之間,當(dāng)采用抽樣間隔時,根據(jù)抽樣定理,可以從抽樣信號恢復(fù)出原信號。MATLAB源程序為: Ts = 1; dt = 0.1; t1 = -4:dt:4; ft = ((1+cos(t1))/2).*(uCT(t1+pi)-uCT(t1-pi)); subplot(221) plot(t1,ft), grid on axis([-4 4 -0.1 1.1]) xlabel(Time(sec)),ylabel(f(t)) title(升余弦脈沖信號) N=500; k = -N:N; W = 2*pi*k/((2*N+1)*dt); Fw = dt*ft*exp(-j*t1*W); subplot(222) plot(W,abs(Fw)), grid on axis([-10 10 -0.2 1.1*pi]) xlabel(\omega),ylabel(F(w)) title(升余弦脈沖信號的頻譜) t2 = -4:Ts:4; fst = ((1+cos(t2))/2).*(uCT(t2+pi)-uCT(t2-pi)); subplot(223) plot(t1,ft,:),hold on stem(t2,fst),grid on axis([-4 4 -0.1 1.1]) xlabel(Time(sec)),ylabel(fs(t)) title(抽樣后的信號),hold off Fsw = Ts*fst*exp(-j*t2*W); subplot(224) plot(W,abs(Fsw)), grid on axis([-10 10 -0.2 1.1*pi]) xlabel(\omega),ylabel(Fs(w)) title(抽樣信號的頻譜) 圖1 升余弦脈沖信號經(jīng)抽樣后的頻譜比較 很明顯,升余弦脈沖信號的頻譜在抽樣后發(fā)生了周期延拓,頻域上該周期為。 2.2 抽樣定理 若是帶限信號,帶寬為,則信號可以用等間隔的抽樣值來唯一表 示。經(jīng)抽樣后的頻譜就是將的頻譜在頻率軸上以抽樣頻率為間隔進行周期延拓。因此,當(dāng)時,或者抽樣間隔時,周期延拓后頻譜不會產(chǎn)生頻率混疊;當(dāng)時,周期延拓后頻譜將產(chǎn)生頻率混疊。通常把滿足抽樣定理要求的最低抽樣頻率,稱為奈奎斯特頻率,把最大允許的抽樣間隔 稱為奈奎斯特間隔。 2.3 信號重建 抽樣定理表明,當(dāng)抽樣間隔小于奈奎斯特間隔時,可用抽樣信號唯一地 表示原信號,即信號的重建。為了從頻譜中無失真地恢復(fù)原信號,可采用截止頻率為的理想低通濾波器。 設(shè)理想低通濾波器的沖激響應(yīng)為,則 其中,,,因此 上式表明,連續(xù)信號可以展開為抽樣函數(shù)的無窮級數(shù),系數(shù)等于抽樣值。利用MATLAB中的函數(shù)來表示,有,所以可獲得由重建的表達(dá)式,即: 例2 對例1中的升余弦脈沖信號,假設(shè)其截止頻率,抽樣間隔, 采用截止頻率的低通濾波器對抽樣信號濾波后重建信號,并計算重建信號與原升余弦脈沖信號的絕對誤差。 解:MATLAB源程序為: wm =2; %升余弦脈沖信號帶寬 wc = 1.2*wm; %理想低通截止頻率 Ts = 1; %抽樣間隔 n = -100:100; %時域計算點數(shù) nTs = n *Ts; %時域抽樣點 fs = ((1+cos(nTs))/2).*(uCT(nTs+pi)-uCT(nTs-pi)); t = -4:0.1:4; ft = fs*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs*ones(1,length(t)))); t1 = -4:0.1:4; f1 = ((1+cos(t1))/2).*(uCT(t1+pi)-uCT(t1-pi)); subplot(311) plot(t1,f1,:), hold on stem(nTs,fs),grid on axis([-4 4 -0.1 1.1]) xlabel(nTs),ylabel(f(nTs)); title(抽樣間隔Ts=1時的抽樣信號f(nTs)) hold off subplot(312) plot(t,ft),grid on axis([-4 4 -0.1 1.1]) xlabel(t),ylabel(f(t)); title(由f(nTs)信號重建得到升余弦脈沖信號) error = abs(ft-f1); subplot(313) plot(t,error),grid on xlabel(t),ylabel(error(t)); title(重建信號與原升余弦脈沖信號的絕對誤差) 圖2 抽樣信號的重建與誤差分析 程序的運行結(jié)果如圖2所示,重建后的信號與原升余弦脈沖信號的誤差在以內(nèi),這是因為當(dāng)選取升余弦脈沖信號帶寬時,實際上已經(jīng)將很少的高頻分量忽略了。 例3 如果例2中的抽樣間隔修改為.5,低通濾波器的截止頻率修改為 。那么,從理論分析將會產(chǎn)生頻譜混疊,則重建的信號與原來的升余弦脈沖信號相比也會產(chǎn)生較大失真。按要求修改例2 MATLAB程序,并分析失真的誤差。 解:程序略,所得結(jié)果如圖3所示。 3. 實驗內(nèi)容 3.1 設(shè)有三個不同頻率的正弦信號,頻率分別為 。現(xiàn)在用抽樣頻率對這三個正弦信號進行抽樣,用MATLAB命令畫出各抽樣信號的波形及頻譜,并分析頻率混疊現(xiàn)象。 3.2 結(jié)合抽樣定理,用MATLAB編程實現(xiàn)信號經(jīng)沖激脈沖抽樣后得到的抽樣信號及其頻譜,并利用重構(gòu)信號。 4. 問題與思考 4.1 通過簡單計算,說明例3中重建信號失真的原因。 4.2 說明例2與例3中nTs向量和t向量的區(qū)別。 圖3 不滿足抽樣定理條件的信號的重建 實驗6 連續(xù)時間LTI系統(tǒng)的時域分析 1. 實驗?zāi)康? 學(xué)會運用MATLAB符號求解連續(xù)系統(tǒng)的零輸入響應(yīng)和零狀態(tài)響應(yīng);學(xué)會運用MATLAB數(shù)值求解連續(xù)系統(tǒng)的零狀態(tài)響應(yīng);學(xué)會運用MATLAB求解連續(xù)系統(tǒng)的沖激響應(yīng)和階躍響應(yīng);思考運用MATLAB卷積積分法求解系統(tǒng)的零狀態(tài)響應(yīng)。 3 實驗原理和實例分析 2.1 連續(xù)時間系統(tǒng)零輸入響應(yīng)和零狀態(tài)響應(yīng)的符號求解 LTI連續(xù)系統(tǒng)可用線性常系數(shù)微分方程來描述,即: 其中,和為實常數(shù)。該系統(tǒng)的完全響應(yīng)由零輸入響應(yīng)和零狀態(tài)響應(yīng)兩部分組成。 MATLAB符號工具箱提供了dsolve函數(shù),可實現(xiàn)常系數(shù)微分方程的符號求解,其調(diào)用格式為: dsolve(eq1,eq2,…,cond1,cond2,…,v) 其中,參數(shù)eq1,eq2…表示各微分方程,它與MATLAB符號表達(dá)式的輸入基本相同,微分或?qū)?shù)的輸入是用Dy,D2y,D3y,…來分別表示y的一階導(dǎo)數(shù),y的二階導(dǎo)數(shù),y的三階導(dǎo)數(shù)…;參數(shù)cond1,cond2,…表示個初始條件或起始條件;參數(shù)v表示自變量,默認(rèn)為變量t??衫胐solve函數(shù)來求解系統(tǒng)微分方程的零輸入響應(yīng)和零狀態(tài)響應(yīng),進而求出完全響應(yīng)。 例1 試用MATLAB命令求齊次微分方程的零輸入響應(yīng),已知起始條件為,,。 解:MATLAB源程序為: clear;clc; eq = D3y+2*D2y+Dy=0; cond = y(0)=1,Dy(0)=1,D2y(0)=2; ans = dsolve(eq,cond); simplify(ans) 得到結(jié)果: ans = 5-4*exp(-t)-3*exp(-t)*t,即零輸入響應(yīng), 在求解該微分方程的零輸入響應(yīng)過程中,到是沒有跳變的,因此,程序中初始條件選擇t=0時刻,即cond = y(0)=1,Dy(0)=1,D2y(0)=2。 例2 已知輸入,試用MATLAB命令求解微分方程的零狀態(tài)響應(yīng)。 解:依題意,可理解為求解給定的兩個方程,即 其MATLAB源程序為: clear;clc; eq1 = D3y+4*D2y+8*Dy=3*Dx+8*x; eq2 = x=Heaviside(t); cond = y(-0.01)=0,Dy(-0.01)=0,D2y(-0.01)=0; ans = dsolve(eq1,eq2,cond); simplify(ans.y) ans = 1/8*heaviside(t)*(exp(-2*t)*cos(2*t)-3*exp(-2*t)*sin(2*t)-1+8*t) 試用dsolve求解零狀態(tài)響應(yīng)和零輸入響應(yīng)時,起始條件的時刻是不同的,不能選擇t=0時刻,程序中選擇了t=-0.01時刻。如果用 cond = y(0)=0,Dy(0)=0,D2y(0)=0定義初始條件,則實際上是定義了初始條件,,,因此,得出錯誤的結(jié)論。還須注意,本例中dsolve的解答是和,必須用ans.y 取出。 例3 試用MATLAB命令求解微分方程,當(dāng)輸入 ,起始條件為,時系統(tǒng)的零輸入響應(yīng),零狀態(tài)響應(yīng)及完全響應(yīng)。 解:求得零輸入和零狀態(tài)響應(yīng)后,完全響應(yīng)則為二者之和。MATLAB源程序為: clear;clc; eq = D2y+3*Dy+2*y=0; cond = y(0)=1,Dy(0)=2; yzi = dsolve(eq,cond); yzi = simplify(yzi) eq1 = D2y+3*Dy+2*y=Dx+3*x; eq2 = x=exp(-3*t)*Heaviside(t); cond = y(-0.001)=0,Dy(-0.001)=0; yzs = dsolve(eq1,eq2- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 信號與系統(tǒng) 信號 系統(tǒng) 實驗 指導(dǎo)書
鏈接地址:http://ioszen.com/p-6670020.html