西安電子科技大學MATLAB基礎及應用課件-第9章MATLAB在信號和系統中的應用舉例_第1頁
西安電子科技大學MATLAB基礎及應用課件-第9章MATLAB在信號和系統中的應用舉例_第2頁
西安電子科技大學MATLAB基礎及應用課件-第9章MATLAB在信號和系統中的應用舉例_第3頁
西安電子科技大學MATLAB基礎及應用課件-第9章MATLAB在信號和系統中的應用舉例_第4頁
西安電子科技大學MATLAB基礎及應用課件-第9章MATLAB在信號和系統中的應用舉例_第5頁
已閱讀5頁,還剩85頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第9章

MATLAB在信號和系統中的應用舉例第9章

MATLAB在信號和系統中的應用舉例連續信號和系統離散信號和系統系統函數頻譜及其幾何意義場的計算和偏微分方程的數值解西安電子科技大學《MATLAB基礎及應用》第9章

MATLAB在信號和系統中的應用舉例9.1

連續信號和系統【例

9-1-1】

列出單位脈沖、單位階躍、復指數函數等連續信號的MATLAB表達式。解:建模嚴格說來,MATLAB是不能表示連續信號的,因為它給出的是各個樣本點的數據,只有當樣本點取得很密時才可看成連續信號。所謂“密”,是相對于信號變化的快慢而言,形象地說,在相鄰樣本點之間的數據變化必須非常小才能看成“密”,其嚴格的數學定義此處不予討論。在編程中,先設定共同的時間坐標,然后分別列出生成三種信號的程序。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序clear,t0=0;

tf=5;

dt=0.05;

t1=1;

t=[t0∶dt∶tf];%(1)單位脈沖信號%在t1(t0≤t1≤tf)處有一持續時間為dt,面積為1的脈沖信號,其余時間均為零t=[t0∶dt∶tf];

st=length(t);n1=floor((t1-t0)/dt);x1=zeros(1,st);x1(n1)=1/dt;%求t1對應的樣本序號%把全部信號先初始化為零%給出t1處幅度為1/dt的脈沖信號subplot(2,2,1),stairs(t,x1)%繪圖,注意為何用stairs而不用plot命令

axis([0,5,0,1.1/dt])%為了使脈沖頂部避開圖框,改變圖框坐標第9章

MATLAB在信號和系統中的應用舉例%(2)單位階躍信號%信號從t0到tf,在t1(t0≤t1≤tf)前為0,到t1處有一躍變,為1x2=[zeros(1,n1-1),ones(1,st-n1+1)];subplot(2,2,3),stairs(t,x2)axis([0,5,0,1.1])%產生階躍信號%繪圖%為了使方波頂部避開圖框,改變圖框坐標%(3)復數指數信號u=-0.5;

w=10;

x3=exp((u+j*w)*t);subplot(2,2,2),plot(t,real(x3))

%繪圖subplot(2,2,4),plot(t,imag(x3))

%繪圖第9章

MATLAB在信號和系統中的應用舉例程序運行結果x1、x2、x3的波形如圖9-1所示。注意:若要顯示連續信號波形中的不連續點,用stairs命令;若要使波形光滑些,則用plot命令較好。復數指數信號x3可以分解為余弦和正弦信號,它們分別是復數信號的實部和虛部,右圖中的兩個衰減振蕩信號就代表了這兩個相位差90°的分量。第9章

MATLAB在信號和系統中的應用舉例圖9-1例9-1-1中x1、x2、x3對應的四種波形第9章

MATLAB在信號和系統中的應用舉例【例9-1-2】編寫求任意高階連續常系數線性系統沖擊響應的程序。解:這個問題在第4章4.3.5節介紹多項式函數庫時已經打下基礎,在第7章機械振動的例7-3-1又討論過二階常系數線性微分方程的解法,讀者可以先看懂那些例題的解法,再看本題。任意階次的連續線性系統可用下列線性常微分方程表述:第9章

MATLAB在信號和系統中的應用舉例寫成傳遞函數形式為因此,其特性可以用系統傳遞函數的分子分母系數向量b和a來表示。向量b和a的長度分別為m+1和n+1,對于一切物理上可實現的系統,必有n≥m。系統的沖擊響應等于傳遞函數的拉普拉斯反變換,問題歸結為如何求出這個反變換。第9章

MATLAB在信號和系統中的應用舉例如果分母系數多項式沒有重根,則可以將兩個多項式之比分解成n個一階部分分式之和,即其中p1,p2,…,pn是分母多項式的n個根,而r1,r2,…,rn則是對應于這n個根的留數。一階分式的反變換可以查表得到,所以可得到沖擊響應的公式:第9章

MATLAB在信號和系統中的應用舉例可見只要求出根p和留數r,線性方程的解就得到了。求根是代數問題,當階次高時,沒有解析解??上驳氖荕ATLAB提供了用數值方法求根和留數的residue函數,它的調用方法如下:[r,p]=residue(b,a)只要給出系數向量b和a,就可以得出根p和留數r,并得到系統的沖擊響應。因此,本題的程序就可方便地編寫如下。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序a=input(′多項式分母系數向量a=′)

b=input(′多項式分子系數向量b=′)[r,p]=residue(b,a),

%求留數disp(′沖擊響應的解析式為h(t)=Σr(i)*exp(p(i)*t)′)k=input(′是否要求波形?是,鍵入1;否,鍵入0′);if

k==1dt=input(′dt=′);tf=input(′tf=′);

%設定時間數組t=0∶dt∶tf;h=zeros(1,length(t));%h的初始化for

i=1∶length(a)-1

%根的數目等于a的長度減1h

=

h+

r(i)*exp(p(i)*t);

%疊加各根分量endplot(t,h),gridelse,end第9章

MATLAB在信號和系統中的應用舉例程序運行結果例如,給出系統傳遞函數為求沖擊響應。根據程序提問依次輸入:a=poly([0,-1,-2,-5])b=[1,7,1]dt=0.05tf=5得出的h(t)如圖9-2所示。第9章

MATLAB在信號和系統中的應用舉例圖9-2高階系統的沖擊響應第9章

MATLAB在信號和系統中的應用舉例程序中要的是系數向量a,而題中給出的是極點向量p=[0,-1,-2,-5],因此這里用poly函數來作轉換。第9章

MATLAB在信號和系統中的應用舉例【例9-1-3】線性時不變系統的特性可用常系數線性微分方程表示:求輸入u為0時,由初始狀態決定的輸出,即其零輸入響應。第9章

MATLAB在信號和系統中的應用舉例解:建模在零輸入條件下,系統的響應取決于微分方程左端特征方程的根,與右端無關,其通解為其中,p1、p2、…、pn是特征方程a1λn+a2λn-1+…+anλ+an+1=0的根。每個分量的系數C1、C2、…、Cn

應由y及其各階導數的初始條件來確定。(Dy0表示y的導數的初始值)第9章

MATLAB在信號和系統中的應用舉例初始條件數應該和待定系數的數目相等,構成一個確定C1、…

Cn的線性代數方程組,寫成V*C=Y0其解為

C=V-1Y0其中C=[C1,C2,…,Cn]′;Y0=[y0,Dy0,…,Dny0]′這種形式的矩陣稱為范德蒙特矩陣。在MATLAB的特殊矩陣庫中提供了專門的函數vander,給出p向量,就可由V=vander(p)生成范德蒙特矩陣。從help

vander知道,需要將它旋轉90°,才與本題的形式相符。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序a=input(′輸入分母系數向量a=[a1,a2,...]=′);

n=length(a)-1;Y0=input(′輸入初始條件向量Y0=[y0,Dy0,D2y0,...]=

′);p=roots(a);V=rot90(vander(p));

%求根,構成范德蒙特矩陣C=V\Y0′;

%求出Cdt=input(′dt=′);

tf=input(′tf=

′)t=0∶dt∶tf;y=zeros(1,length(t));%給出自變量數據組for

k=1∶n

y=y+c(k)*exp(p(k)*t);end%求各分量的時間函數并疊加plot(t,y),grid第9章

MATLAB在信號和系統中的應用舉例下面利用這一程序來解一個三階系統。程序運行結果運行此程序并輸入:a=[1,2,9,3];dt=0.1;tf=5;而初始值Y0分別取[1,0,0];

[0,1,0];

[0,0,1]用hold

on語句使三次運行生成的圖形畫在一幅圖上,得到圖9-3。第9章

MATLAB在信號和系統中的應用舉例圖9-3三階系統零輸入分量的解第9章

MATLAB在信號和系統中的應用舉例【例

9-1-4】

n級放大器,每級的轉移函數均為

,求階躍輸入下的過渡過程,畫出n不同時的波形及頻率特性進行比較。解:建模系統的轉移函數為

,階躍輸入的拉普拉斯變換為

,因此輸出為兩者的乘積,即求Y(s)的拉普拉斯反變換,即可得到輸出過渡過程y(t)。第9章

MATLAB在信號和系統中的應用舉例這里我們遇到了一個有多重極點-ωn的H(s)求拉普拉斯反變換的問題。從原理上說,同樣可以用4.3節中的留數極點分解法來求。只是在有n重根時,分解出的部分分式的分母將不再是一次極點,而有(s+ωn)、…、(s+ωn)n-1、(s+ωn)n等項,而(s+ωn)-q的反變換可用如下解析式表示:第9章

MATLAB在信號和系統中的應用舉例按照這個思路,應該先求出Y(s)的極點留數。注意分母中除了有n個重極點外,還有一個零極點(即1/s),故共有n+1個極點。先用poly函數求出Y(s)分母多項式的系數向量,并求出極點及相應的留數:by=wn^n;

ay=[poly(-ones(1,n)*wn),0][r,p]=residue(by,ay);再把各個分量疊加在一起。然而,實際上,這樣編程不僅非常麻煩,而且難以得到正確的結果。其原因是在重極點處,MATLAB

的residue算法遇到了病態問題,數據中小小的舍入誤差會使結果產生很大誤差,即使n取2都得不出正確結果。第9章

MATLAB在信號和系統中的應用舉例為了避開重極點問題,可以有意把極點拉開一些。例如,設n個極點散布在0.98ωn~1.02ωn之間,那樣就可以全部作為非重

極點來列程序。這種處理在工程上是完全沒有問題的,一般電阻的標稱誤差為±5%,電容則更大,在工程實踐中,使各個放大器時常數完全相同是不可能的,即便要把其誤差控制到±2%以內也非易事,所以不必自找麻煩,干脆用非重極點的下列程序來求解。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序clear,clf,N=input(′輸入放大器級數N=′);wn=1000;dt=1e-4;tf=0.01;t=0∶dt∶tf;y=zeros(N,length(t));for

n=1∶Np0=-linspace(.95,1.05,n)*wn;%輸出初始化%將H(s)極點分散布置在±5%區間

ay=poly([p0,0]);%由Y(s)的極點(比H(s)多一個零極點)求分母系數by=prod(abs(p0));

%求Y(s)的分子系數[r,p]=residue(by,ay);

%求Y(s)的留數極點第9章

MATLAB在信號和系統中的應用舉例for

k=1∶n+1

%把各部分分式對應的時域分量相加y(n,∶)=y(n,∶)+r(k)*exp(p(t);endfigure(1),plot(t,y(n,∶));grid,hold

on%繪制過渡過程曲%下面這幾條語句用來繪制波特圖figure(2),bode(prod(abs(p0)),poly(p0));hold

onbh=by;

ah=poly(p0);w=logspace(2,4);%求H(s)的分子分母系數%給出頻率范圍和分度H=polyval(bh,j*w)./polyval(ah,j*w);%求H(s)在各頻點的值H(jw)aH=unwrap(angle(H))*180/pi;%求出以度為單位的連續相角第9章

MATLAB在信號和系統中的應用舉例fH=20*log10(abs(H));

%求出以分貝為單位的振幅figure(2),subplot(2,1,1),semilogx(w,fH),grid

on,hold

on%繪幅頻圖subplot(2,1,2),semilogx(w,aH),grid

on,hold

on%繪相頻圖end,hold

off第9章

MATLAB在信號和系統中的應用舉例程序運行結果運行此程序,設N=4,可得1級到4級放大器的過渡過程如圖9-4所示,從中看出輸出信號達到0.6處所需的時間約為單級時常數乘以級數。此程序在N>4時又會出現很大誤差,讀者可自己編寫更好的程序。第9章

MATLAB在信號和系統中的應用舉例圖9-4多級放大器的階躍過渡過程第9章

MATLAB在信號和系統中的應用舉例為了畫波特圖,程序可按以下步驟進行:求頻率特性。用多項式求值函數polyval,并且用了元素群運算,輸入頻率數組作為自變量,一次就求出全部的頻率特性。注意頻率特性是復數,通常關心的是它們的振幅和相角。振幅和相位特性橫坐標都要用對數坐標并且上下對齊。振幅的縱坐標單位應化為分貝,這里用了20*log10(abs(H))相位的縱坐標單位應為度,并且應連續變化,不取主角,所以這里加了unwrap命令。第9章

MATLAB在信號和系統中的應用舉例在控制系統工具箱中有一個bode命令可以直接完成這些功能,但本書遵循的原則是不用工具箱,以便讓讀者知道工具箱是怎么編程的。當然讀者也應知道,工具箱中的bode函數,遠不止這幾條語句,作為商用軟件庫中的一個正式函數,它必須考慮自動確定頻率區間,自動檢查輸入有無錯誤等,程序要復雜得多。圖9-5繪出了多級放大器的頻率特性。其幅頻特性顯示了低通的特點,隨級數的增加,通帶減小;相頻特性說明,隨級數的增加,負相移成比例地增加。第9章

MATLAB在信號和系統中的應用舉例圖9-5多級放大器的頻率特性第9章

MATLAB在信號和系統中的應用舉例【例9-1-5】設方波信號的寬度為5

s,信號持續期為10

s,試求其在0~20(1/s)頻段間的頻譜特性。如只取0~10(1/s)的頻譜分量(相當于通過了一個低通濾波器),求其輸出波形。第9章

MATLAB在信號和系統中的應用舉例解:建模設信號的時域波形為f(t),在0~10

s的區間外信號為0,則其傅里葉變換為按MATLAB作數值計算的要求,必須把t分成N份,用相加來代替積分,對于任一給定的ω,可寫成這說明求和的問題可以用f(t)行向量乘以ejωt列向量來實現。此處的Δt是t的增量,在程序中,將用dt來代替。第9章

MATLAB在信號和系統中的應用舉例由于要求出一系列不同的ω處的F值都用同一公式,因此可以利用MATLAB中的元素群運算功能,把ω設成一個行數組,分別

代入本公式左右端的ω中去,寫成(程序中把ω寫成w)F=f*exp(-j*t′*w)·Δt其中,F是與w等長的行向量,exp中的t′是列向量,w是行向量,t′*w是一個矩陣,其行數與t相同,列數與w相同。這個矩陣乘式就完成了傅里葉變換。類似地可以得到傅里葉逆變換表示式。由此得到下面的傅里葉變換程序。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序

clear,tf=10;N=256;t=linspace(0,tf,N);%給出時間分割w1=linspace(eps,20,N);

dw=20/(N-1);%dw=1/4/tf;w1=[eps∶dw∶(N-1)/4/tf];

%給出頻率分割f=[ones(1,N/2),zeros(1,N/2)];%給出信號(此處是方波F1=f*exp(-j*t′*w1)*tf/(N-1);w=[-fliplr(w1),w1(2∶N)];%求傅里葉變換%補上負頻率第9章

MATLAB在信號和系統中的應用舉例F=[fliplr(F1),F1(2∶N)];%補上負頻率區的頻譜w2=w(N/2∶3*N/2);F2=F(N/2∶3*N/2);%取出中段頻率%取出中段頻譜subplot(1,2,1),plot(w,abs(F),′linewidth′,1.5),grf1=F2*exp(j*w2′*t)/pi*dw;

%對中段頻譜求傅里葉逆變換subplot(1,2,2),plot(t,f,t,f1,′linewidth′,1.5),第9章

MATLAB在信號和系統中的應用舉例程序運行結果執行這個程序的結果如圖9-6所示,因為方波含有很豐富的高頻分量,要充分恢復其原來波形需要很寬的頻帶,實踐中不可能完全做到。第9章

MATLAB在信號和系統中的應用舉例圖9-6方波信號的頻譜和取|ω|<10部分頻譜的逆變換波形(a)方波信號的頻譜;(b)取|ω|<10部分頻譜的逆變換波形第9章

MATLAB在信號和系統中的應用舉例9.2

離散信號和系統信號可以分為模擬信號和數字信號。模擬信號用x(t)表示,其中變量t代表時間。離散信號用x(n)表示,其中變量n為整數并代表時間的離散時刻,因此它也稱為離散時間信號。離散信號是一個數字的序列,并可以表述為其中,向上的箭頭表示在n=0處的取樣。第9章

MATLAB在信號和系統中的應用舉例在MATLAB中,可以用一個向量x來表示一個有限長度的序

列。然而這樣一個向量并沒有包含基準采樣位置的信息。因此,完全地表示x(n)要用x和n兩個向量。例如序列x(n)={2,1,-1,

,1,4,3,7}(下面的箭頭為第0個采樣點),在

MATLAB中表示為n

=

[-3,-2,-1,0,1,2,3,4],

x=[2,1,-1,5,1,4,3,7]當不需要采樣位置信息時,可以只用x向量來表示。由于內存有限,因此MATLAB無法表示無限序列。第9章

MATLAB在信號和系統中的應用舉例【例9-2-1】編寫MATLAB程序來產生下列基本脈沖序列。單位脈沖序列:起點n0,終點nf,在ns處有一單位脈沖(n0≤ns≤nf)。單位階躍序列:起點n0,終點nf,在ns前為0,在ns處及以后為1(n0≤ns≤nf)。實數指數序列:x3=(0.9)n。復數指數序列:x4=e(-0.2+0.3j)n。第9章

MATLAB在信號和系統中的應用舉例解:建模這些基本序列的表達式比較簡明,編寫程序也不難。對單位脈沖序列,我們提供了直接賦值和邏輯關系兩種方法,其中用邏輯關系的編法比較簡潔,讀者從中可看到MATLAB編程的靈活性和技巧性。通常用stem語句來繪制離散序列。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序

clear,no=0;nf=10;ns=3;n1=n0∶nf;

x1=[zeros(1,ns-n0),1,zeros(1,nf-ns)];%n1

=

n0∶nf;

x1=[(n1-ns)==0];%顯然,用邏輯式是比較高明的方法n2=n0∶nf;x2=[zeros(1,ns-n0),ones(1,nf-ns+1)];%也有類似的用邏輯比較語句產生單位階躍序列的方法,留給讀者思考n3=n0∶nf;x3=(0.9).^n3;

%實數指數序列n4=n0∶nf;x4=exp((-0.2+0.3j)*n3);%復數指數序列第9章

MATLAB在信號和系統中的應用舉例subplot(2,2,1),stem(n1,x1);subplot(2,2,2),stem(n2,x2);subplot(2,2,3),stem(n3,x3);subplot(4,2,6),stem(n4,real(x4));%注意subplot的輸入變元subplot(4,2,8),stem(n4,imag(x4));line([0,10],[0,0]),程序運行結果程序運行結果如圖9-7所示。%畫橫坐標第9章

MATLAB在信號和系統中的應用舉例圖9-7基本脈沖序列的波形第9章

MATLAB在信號和系統中的應用舉例【例9-2-2】離散傅里葉變換的計算。解:建模一個時間序列x(n)的離散時間傅里葉變換的定義為如果序列的長度是有限的,可以把它看做是周期性無限序列中的一個周期,其長度為N。對這個周期性序列可以用離散傅里葉變換(注意少了“時間”兩字)進行研究,它的定義為其中第9章

MATLAB在信號和系統中的應用舉例用例9-1-4中的方法,引入矩陣乘法來實現求和運算。用元素群算法來求不同k時的X,把n和k都設成1×N的行數組,令nk=n′*k,它就成為N×N的方陣,因而

也是N×N方陣。由此得出離散傅里葉變換的算式MATLAB只能處理有限長度的序列,因此,適合于計算離散傅里葉變換及其逆變換。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序設有限信號序列xn(n)的長度為Nx,則按定義,求其N點傅里葉變換Xk(k)的程

序為:xn=input(′x=′);Nx=length(xn);N=Nx

%取N為x的長度tic,n=[0∶1∶N-1];k=[0∶1∶N-1];%設定n和k的行向量%WN因子%產生一個含nk值的N×N維矩陣%換算矩陣WN=exp(-j*2*pi/N);nk=n′*k;WNnk=WN

.^

nk;Xk=xn

*

WNnk;

toc%DFT

系數向量,即離散傅里葉變換的結果plot(abs(Xk)),grid

%繪幅頻特性圖第9章

MATLAB在信號和系統中的應用舉例在N很大時,這個程序的運算速度比較低。程序中的tic和toc語句用來測試它們之間的程序運行時間。實際上MATLAB已提供了快速離散傅里葉變換的函數fft,可直接調用。其調用格式為X

=

fft(x,N)其中,x是輸入的時間序列,N是傅里葉變換取的點數。若省略N,則它自動把x的長度作為N。當N取2的冪時,變換速度最快,所以要提高fft函數的運行速度,程序應編寫如下:xn=input(′x

=

′);

Nx=length(xn)%取N為大于Nx而最接近于Nx的2的冪

N=pow2(nextpow2(Nx);tic,X=fft(xn,N);tocNx<N,x長度不足N的部分,程序會自動補0。要注意X是一

個長度為N的復數數組,可以分解出它的振幅和相位,分別繪圖。第9章

MATLAB在信號和系統中的應用舉例程序運行結果按程序提示輸入x=sin(0.1*[1∶700])+randn(1,700);所得的fft的幅度特性是一樣的,如圖9-8所示,其中有效信號與噪聲可明顯區分。在作者的計算機上,前一程序的時間測試結果約為8

s,后一程序為0.05

s。第9章

MATLAB在信號和系統中的應用舉例圖9-8信號的fft的振幅頻率特性第9章

MATLAB在信號和系統中的應用舉例9.3

系統函數【例9-3-1】簡單信號流圖模型的矩陣解法[11]。建模信號流圖是用來表示和分析復雜系統內的信號變換關系的工具。其基本概念如下:系統中每個信號用圖上的一個節點表示。如圖中的u、x1、x2。系統部件對信號實施的變換關系用有向線段表示,箭尾為輸入信號,箭頭為輸出信號,箭身標注對此信號進行變換的乘子。如圖上的G1、G2。如果乘子為1,可以不必標注。每個節點信號的值等于所有指向此節點的箭頭信號之和,每個節點信號可以向外輸出給多個部件,其值相同。第9章

MATLAB在信號和系統中的應用舉例根據這幾個概念,可以列出圖9-9的方程如下:x1=u-G2x2,

x2=G1x1第9章

MATLAB在信號和系統中的應用舉例圖9-9帶反饋的簡單信號流圖第9章

MATLAB在信號和系統中的應用舉例寫成矩陣方程或x=Qx+Pu移項整理,可以得到求所有未知信號向量x的公式第9章

MATLAB在信號和系統中的應用舉例定義系統的傳遞函數W為輸出信號與輸入信號之比x/u,則W可按下式求得:W=x/u=inv(I-Q)*P因為求這個二階矩陣的逆可以直接用下面的公式:若則第9章

MATLAB在信號和系統中的應用舉例所以即u到x1的傳遞函數為

,u到x2的傳遞函數為。對于階次高的情況,求逆就必須用軟件工具了。如果信號流圖中有G1那樣的符號變量,那么它的求解要用符號運算工具箱。第9章

MATLAB在信號和系統中的應用舉例MATLAB程序

syms

G1

G2Q=[0,-G2;

G1,0],P=[1;

0]W=inv(eye(2)-Q)*P第9章

MATLAB在信號和系統中的應用舉例程序運行結果程序運行的結果是與前面的結果相同。這是一個簡單的問題,用一些其他的數學方法也能得到同樣的結果,很出名的“梅森公式”就是用圖形拓樸的方法得到信號流圖的公式,但這個公式非常繁瑣,而且無法機械化。到現在為止,我們還沒有見過任何一本書籍用矩陣方法來推導這個公式。用矩陣代數方法的最大好處是可以向任意高的階次、任意復雜的信號流圖推廣,實現復雜系統傳遞函數推導的自動化[11-12]。第9章

MATLAB在信號和系統中的應用舉例【例9-3-2】較復雜信號流圖模型的矩陣解法。建模圖9-10是一個較復雜的信號流圖。照上述方法列出它的方程如下:x1=-G4x3+ux2=G1x1-G5x4x3=G2x2x4=G3x3第9章

MATLAB在信號和系統中的應用舉例將其列為矩陣方程,得到公式W=x/u=inv(I-Q)·P同樣是正確的,不過這里的Q和P分別為4×4和4×1矩陣,用手工求逆是很麻煩的。第9章

MATLAB在信號和系統中的應用舉例圖9-10帶雙重反饋的信號流圖第9章

MATLAB在信號和系統中的應用舉例MATLAB程序

syms

G1

G2

G3

G4

G5Q=[0,0,-G4,0;

G1,0,0,-G5;

0,G2,0,0;

0,0,G3,0],P=[1;

0;

0;

0]W=inv(eye(4)-Q)*PPretty(W(4))第9章

MATLAB在信號和系統中的應用舉例我們關心的輸出通常是x4,也就是最后那個傳遞函數W(4)=x4)/u,其結果為當系統內各個環節都是線性集總參數,因而它們的傳遞函數Gi都可以表示為s的多項式有理分式

時,不管其階次有多高,傳遞函數W都可以很容易地由計算機直接自動算出。這個方法還可以推廣到離散系統,用來計算任意復雜的數字濾波器系統函數。第9章

MATLAB在信號和系統中的應用舉例9.4頻譜及其幾何意義頻譜分析是信號與系統課程中最重要的內容之一,很多讀者在學習中感到這部分內容很抽象,往往只能從數學上了解時域信號與其頻譜間的變換關系,而沒有理解它的物理意義,而用MATLAB可以幫助讀者建立形象的幾何概念,真正掌握它。首先來看歐拉公式,它以最簡明的方式建立了信號頻域與時域的關系:第9章

MATLAB在信號和系統中的應用舉例它說明一個最簡單的實余弦信號可以由正、負兩個Ω0頻率分量合成。在復平面上,正的Ω0對應反時針旋轉的向

量,負的Ω0對應順時針旋轉的向量,當這兩個向量的幅度相同而相角符號相反時,就合成為一個在實軸上的向量。它的相角為零,大小按正弦變化,形成了實信號cosΩ0t(如圖9-11所示)。推而廣之,任何實周期信號必然具有正、負兩組頻率的頻譜成分,正、負頻率頻譜的幅度對稱而相位反對稱,或者說正、負頻率的頻譜是共軛的。第9章

MATLAB在信號和系統中的應用舉例圖9-11實序列由對稱的正負頻率合成第9章

MATLAB在信號和系統中的應用舉例【例9-4-1】設計一個演示程序,要求它能把用戶任意給定的四個集總頻譜合成,并生成對應的時域信號。解:建模按上述多節桿合成模型來考慮這個問題。程序設計主要包括三部分:(1)各頻譜分量的輸入,包括其幅度和頻率(有正負號);(2)將各分量當做轉動的桿件首尾相接;(3)記錄多節桿系末端的軌跡,并畫出圖形。第9章

MATLAB在信號和系統中的應用舉例第9章

MATLAB在信號和系統中的應用舉例程序運行結果運行程序并按提示輸入數據,如果只取兩個幅度相等而頻率符號相反的集總頻譜,那么將得到與圖9-11相仿的結果。現取四個集總頻譜,輸入a(1)=1,w(1)=-1;a(2)=1,w(2)=-1;a(3)=0.5,w(3)=3;a(4)=0.5,w(1)=-4;第9章

MATLAB在信號和系統中的應用舉例圖9-12四個頻譜向量組成的多節桿及其端點軌跡第9章

MATLAB在信號和系統中的應用舉例圖9-13四個集總頻譜生成的復信號及其實信號分量(a)合成的復平面信號;(b)合成的虛部信號;(c)合成的實部信號第9章

MATLAB在信號和系統中的應用舉例輸入頻譜的幅度可以是負數,也可以是虛數,甚至可以是復數,它不僅反映了頻譜的大小,還反映了該向量的起始相位;頻譜的頻率則只能是可正可負的實數,正頻率和負頻率以及在該頻率上頻譜的意義在此不言自明。讀者可以做各種各樣的試驗,例如當兩組頻率具有倍頻關系時,得到的是周期信號;如果頻率比是任意小數,那將得出非周期的信號。另外,這樣的演示適用于集總頻譜,對于分布的頻譜密度,就要把它想象為若干小的集總頻譜的疊合??傊?有了這樣的形象演示,便可以大大擴展時域信號與頻域譜之間關系的思維空間。第9章

MATLAB在信號和系統中的應用舉例可見,只有在復信號平面上,才能看到頻率的正負。許多人往往看不到負頻率頻譜的意義,這是因為他們總是停留在實信號的范疇來思考問題。要想知道象有沒有鼻子(負頻率),必須去摸象頭(復信號),只摸象腿(實信號)是得不到真切的認識(信號理論普遍而科學的規則)的。第9章

MATLAB在信號和系統中的應用舉例9.5場的計算和偏微分方程的數值解現代科學和工程中大量遇到偏微分方程,這類方程通常用來表示分布在三維空間的場。它的解析解是很難求得的,特別是在復雜的邊界條件和初始條件下,不太可能有解析解。實際工程上只要得到它的數值解就可以了。此時的一個重要手段就是把微分變為有限差分,把積分變為求和,從而把偏微分方程變為代數方程組。要得出比較準確的結果,差分必須取得很小,因而所得到的代數方程組的階數可能很高,沒有極高水平的計算機和算法,是無法得出有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論