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