簡介:MATLAB程式設(shè)計入門篇程式碼與記憶體之最佳化,張智星JANGMIRLABORGHTTP//MIRLABORG/JANG清大資工系多媒體檢索實驗室,重點說明65版之前,MATLAB執(zhí)行效率非常倚賴程式碼的向量化65(含)版後,MATLAB引進(jìn)了JIT加速器,程式碼向量化的重要性相對降低。同學(xué)們?nèi)皂毑t解程式碼向量化的實作方法、優(yōu)缺點。本章範(fàn)例之執(zhí)行環(huán)境OSWINDOWS7CPUINTELCOREI72670QM,220GHZRAM8GBMATLAB7120635R2011A,21程式碼的向量化,65版之前,MATLAB程式環(huán)境是一個傳統(tǒng)的解譯器(INTERPRETER),在執(zhí)行MATLAB的程式碼時,會進(jìn)行下列動作逐列對程式碼轉(zhuǎn)換為PCODE,這是MATLAB可以解讀的格式。對產(chǎn)生的PCODE進(jìn)行逐列執(zhí)行。,MATLAB程式運作流程I,在執(zhí)行每一列PCODE時,都還包含一些「經(jīng)常開銷」(OVERHEAD)若該列執(zhí)行需要大量運算,經(jīng)常開銷就會顯得很渺小而不會拖累程式執(zhí)行速度。若該列只是簡單的運算,那經(jīng)常開銷的比例就會相對提高。若該列是放在迴圈內(nèi),那麼程式碼的執(zhí)行速度就會被這些經(jīng)常開銷大幅拖慢。,MATLAB程式運作流程II,若要加快執(zhí)行速度MATLAB65版之前,就要盡量不使用迴圈,而盡量改用向量化的運算,以降低經(jīng)常開銷的比例。MATLAB65版(含)之後,已經(jīng)加入了JITACCELERATOR,有效地降低了經(jīng)常開銷的比例,同時也使得向量化程式碼的重要性越來越低。JITJUSTINTIME對向量化運算來進(jìn)行說明,主要著眼點在於很多舊的程式碼還是包含向量化的運算。MATLAB65之前的版本,向量化的運算還是提高執(zhí)行效率的主要關(guān)鍵。某些情況下,JITACCELERATOR的效能無法完全發(fā)揮,還是需要配合向量化的運算才可以讓程式碼更有效率。,MATLAB程式碼的向量化,傳統(tǒng)範(fàn)例I,計算N項調(diào)和數(shù)列的總和,若使用FOR迴圈,當(dāng)N100,000時,可計算其執(zhí)行時間如下範(fàn)例21HSUM01M,TICN100000TOTAL0FORI1NTOTALTOTAL1/IENDTOC,ELAPSED_TIME263000,由上可知,當(dāng)N100,000時,使用FOR迴圈的程式碼約需263秒才能執(zhí)行完畢。若改用向量化的運算,可計時如下範(fàn)例22HSUM02M,TICN100000SEQUENCE1NTOTALSUM1/SEQUENCETOC,ELAPSED_TIME00600,傳統(tǒng)範(fàn)例II,提示,上述的測試時間是根據(jù)PENTIUM450,256MBRAM在MATLAB61所得到的結(jié)果。如果你的電腦更快,計算時間的差異性就不會那麼顯著。若使用我目前環(huán)境進(jìn)行測試HSUM01?0009773SECHSUM02?0008938SEC在MATLAB65版之後,採用了JITJUSTINTIME的編譯技術(shù),因此「向量化」和「非向量化」的程式執(zhí)行速度差異較小。,要能夠熟練地運用向量化的運算,有下列三個訣竅對矩陣的索引(INDEXING)非常熟悉。對MATLAB可用的內(nèi)建(BUILTIN)指令非常熟悉。對問題本身的解法非常瞭解。,程式碼向量化的要訣,若要對一個矩陣X的每一個直行乘上向量A的每一個元素,我們可使用內(nèi)建的DIAG指令來達(dá)成此功能,例如範(fàn)例23COLMULTIPLY01M此為「以空間換取時間」的範(fàn)例。,X123111A321YXDIAGA,Y343321,矩陣直行乘法,若要對一個矩陣X的每一個橫列乘上向量A的每一個元素,也可以使用DIAG指令,例如範(fàn)例24ROWMULTIPLY01M此為「以空間換取時間」的範(fàn)例。,X123456A31YDIAGAX,Y369456,矩陣橫列乘法,將一個行向量拷貝N份,可執(zhí)行如下範(fàn)例25COPYCOLMAONES1,N也可以產(chǎn)生相同的效果。,N10A137REPA,ONES1,N,REP111111111133333333337777777777,行向量拷貝,將一個列向量拷貝N份,可執(zhí)行如下範(fàn)例26COPYROWMONESN,1A也可以產(chǎn)生相同的效果。,N5A148REPAONES1,N,,REP148148148148148,列向量拷貝,將一個MN矩陣A拷貝MN次,並安排成維度大小為MMNN的大矩陣,可輸入如下範(fàn)例27COPYMATRIXM亦可使用內(nèi)建指令REPMAT來達(dá)成同樣的功能。,A123456MSIZEA,1NSIZEA,2M3N2MINDEX1MONES1,MNINDEX1NONES1,NBAMINDEX,NINDEX,B123123456456123123456456123123456456,矩陣拷貝,22JIT加速器,65版後,MATLAB引進(jìn)了JITJUSTINTIME的編譯技術(shù),簡稱JIT加速器(JITACCELERATOR)大幅地提高了迴圈的執(zhí)行效率。使得一般程式碼的撰寫,可以使用程式設(shè)計師最能代表演算法精神的方式來呈現(xiàn)。不必為了提高效率、勉強使用向量化運算,造成程式碼維護(hù)的困難。,在JIT加速器的運作下,向量化運算的光環(huán)不如往日耀眼,測試範(fàn)例如下範(fàn)例28HSUM03M,JIT加速器可以加速迴圈運算,NS10001100FORI1LENGTHNS第一種方法FORLOOPOPERATIONTICTOTAL0FORJ1NSITOTALTOTALSIN1/JENDTIME1TOC,由此圖可以看出,TIME1/TIME2的值都大約在4左右,顯示JIT加速器的效能已經(jīng)大幅提升。(若無JIT,此值約在40左右。),第二種方法VECTORIZEDOPERATIONTICTOTALSUMSIN1/1NTIME2TOC計算倍數(shù)RATIOITIME1/TIME2ENDPLOTNS,RATIO,GRIDONXLABELNYLABELTIME1/TIME2,22JIT加速器,JIT加速器的主要功能,JIT加速器的主要功能,列出如下JIT加速器可將每一列MATLAB程式碼直接轉(zhuǎn)成「原機(jī)指令」,而不再直接使用PCODE,因此省去大部分PCODE會遇到的經(jīng)常開銷。JIT加速器也會對INTELX86為主的WINDOWS及LINUX進(jìn)行程式碼最佳化。JIT加速器可以分成兩部分JUSTINTIMECODEGENERATION將PCODE轉(zhuǎn)成原機(jī)指令。RUNTIMETYPEANALYSIS對資料型態(tài)的分析,以便用於JUSTINTIMECODEGENERATION,有了JIT加速器,是否還要使用向量化運算呢基本的判斷原則如下所用的向量化運算是根基於「以空間換取時間」,就必須經(jīng)過測試,才能決定是否值得使用。所用的向量化運算並非根基於「以空間換取時間」,那還是要盡量使用(尤其是要盡量使用內(nèi)建指令),因為這種向量化運算不需要額外的空間來暫存資訊,因此效率會比JIT加速器更好。碰到較複雜的資料結(jié)構(gòu)(例如稀疏矩陣及維度超過3維的陣列),JIT加速器並不會轉(zhuǎn)成原機(jī)指令,因此在這種情況下,也要盡量使用向量化運算。,JIT加速器與向量化運算,使用「不需要額外空間」的向量化運算來提昇效率範(fàn)例29MATMULTIPLY01M,「不需要額外空間」的向量化運算I,NS50120FORJ1LENGTHNSNNSJARANDNBRANDN第一種方法FORLOOPOPERATIONCZEROSNTICFORP1NFORQ1NCP,QAP,QBP,QEND,ENDTIME1JTOC第二種方法VECTORIZEDOPERATIONTICCABTIME2JTOCENDSUBPLOT2,1,1PLOTNS,TIME1,V,NS,TIME2,GRIDONLEGENDTIME1FORFORLOOPCODE,TIME2FORVECTORIZEDCODEXLABELNYLABELSECONDSUBPLOT2,1,2PLOTNS,TIME1/TIME2,GRIDONXLABELNYLABELTIME1/TIME2,「不需要額外空間」的向量化運算II,「不需要額外空間」的向量化運算III,,第一個圖畫出迴圈運算和向量化運算所花的時間。第二個圖則是時間的比值,有此可以看出加速的倍數(shù)大約都在10~20之間。,為了使JIT加速器發(fā)揮最大效能,我們的程式碼也要盡量配合,以下是幾點注意事項迴圈中的索引變數(shù)盡量使用純量。迴圈中的變數(shù)盡量是簡單的資料型態(tài),並以不超過二維為主。迴圈內(nèi)所呼叫的函式僅限於MATLAB內(nèi)建函式。,如何發(fā)揮JIT加速器的最大功能,MATLAB可隨時改變矩陣的維度,以容納新的資料,但是每一次增大矩陣的容量時,可能造成下列現(xiàn)象MATLAB必須要向電腦的作業(yè)系統(tǒng)索取記憶體,因此會造成程式執(zhí)行效率的降低造成記憶體使用的分散現(xiàn)象,可能導(dǎo)致「實際雖仍有充足的記憶體,但卻未有連續(xù)空間以處理較大矩陣」的現(xiàn)象?;兑陨戏N種原因,若預(yù)先知道使用矩陣的維度大小,則最好實施矩陣的預(yù)先配置,23矩陣的預(yù)先配置,計算亂數(shù)矩陣的各個元素平方範(fàn)例210PREALLOCATE01M,N10000000XRAND1,NCLEARY清除變數(shù)YTICFORI1NYIXI2ENDTIME1TOC,矩陣預(yù)先配置的範(fàn)例I,YZEROS1,N預(yù)先配置所須矩陣YTICFORI1NYIXI2ENDTIME2TOCFPRINTFTIME1G,TIME2G,TIME1/TIME2G\N,TIME1,TIME2,TIME1/TIME2,矩陣預(yù)先配置的範(fàn)例II,TIME1286088,TIME20152491,TIME1/TIME218761,上述範(fàn)例中,使用YZEROS1,N來事先宣告Y所佔用的空間,因此程式碼的執(zhí)行效率快了將近20倍。,24記憶體管理,MATLAB提供4個和記憶體管理直接相關(guān)的指令,執(zhí)行MATLAB程式碼時,發(fā)生「OUTOFMEMORY」的警告訊息,即表示已無足夠空間可容納新變數(shù),可採取的解決方案為隨時使用CLEAR指令清除不再須要的變數(shù)。執(zhí)行PACK指令,減小記憶體分散使用的現(xiàn)象。增加虛擬記憶體的大小。選用適合的資料型態(tài),例如DOUBLE?UINT8。如果上述方法仍無法解決,那麼只有減少所用資料量的大小。,「記憶體不足」之對策,
下載積分: 4 賞幣
上傳時間:2024-01-06
頁數(shù): 28
大?。?0.26(MB)
子文件數(shù):
簡介:信號與系統(tǒng),SIGNALSANDSYSTEMS,國家精品課程主教材、北京市精品教材信號與系統(tǒng)第2版陳后金,胡健,薛健清華大學(xué)出版社,2005年,利用MATLAB進(jìn)行信號與系統(tǒng)分析,,MATLAB簡介信號的MATLAB表示利用MATLAB進(jìn)行系統(tǒng)的時域分析利用MATLAB進(jìn)行信號的頻域分析利用MATLAB分析系統(tǒng)的頻率特性利用MATLAB進(jìn)行連續(xù)系統(tǒng)的S域分析利用MATLAB進(jìn)行離散系統(tǒng)的Z域分析利用MATLAB進(jìn)行系統(tǒng)的狀態(tài)變量分析,MATLAB簡介,,MATRIXLABORATORY,MATLAB的工作方式如何獲取幫助表達(dá)式變量、數(shù)值、算數(shù)運算符、關(guān)系運算符、邏輯運算符、冒號運算符數(shù)組及其運算函數(shù)文件循環(huán)(FOR、WHILE循環(huán))基本繪圖語句,一、MATLAB的工作方式,(1)窗口命令方式(2)運行以M為擴(kuò)展名磁盤文件,工作方式舉例,用PLOT函數(shù)畫一個方波T100113F001100PLOTT,FXLABELTYLABELFTAXIS1302,直接在命令窗口輸入以上命令,建一個名字為MY_FILEM的文件,然后在命令窗口輸入文件名及回車。,二、獲取幫助,命令窗口輸入HELP函數(shù)名例如HELPPLOT,三、表達(dá)式,不需要變量的類型說明變量名的第一個字符必須是字母變量名長度不超過31個字符大寫和小寫的字母視為不同的字符例如NUM_STUDENTS25特殊變量PI表示圓周率,INF表示無窮大,NANNOTANUMBER表示不定量,如0/0。,變量,三、表達(dá)式,數(shù)值,MATLAB用常規(guī)的十進(jìn)制表示數(shù)值用I或J作為后綴來表示復(fù)數(shù)的虛部例1235E5表示1235?105,X23JABSX求復(fù)數(shù)X的模ANGLEX求復(fù)數(shù)X的相角弧度REALX求復(fù)數(shù)X的實部IMAGX求復(fù)數(shù)X的虛部CONJX求復(fù)數(shù)X的共軛,三、表達(dá)式,運算符號,算數(shù)運算符,加減乘/除乘方‘矩陣的復(fù)共軛轉(zhuǎn)置,三、表達(dá)式,運算符號,邏輯運算符,A34。,用LINSPACE產(chǎn)生數(shù)組,四、數(shù)組,1數(shù)組的構(gòu)造,MATLAB提供了一些產(chǎn)生基本矩陣的函數(shù)ZEROS產(chǎn)生矩陣元素全為0的矩陣ONES產(chǎn)生矩陣元素全為1的矩陣RAND產(chǎn)生0,1均勻分布隨機(jī)數(shù)矩陣RANDN產(chǎn)生正態(tài)分布隨機(jī)數(shù)矩陣,四、數(shù)組,2數(shù)組的運算,數(shù)組和一個標(biāo)量相加或相乘例YX1Z3X2個數(shù)組的對應(yīng)元素相乘除/例ZXY確定數(shù)組大小的函數(shù)SIZEA返回值數(shù)組A的行數(shù)和列數(shù)(二維)LENGTHB確定數(shù)組B的元素個數(shù)(一維),五、函數(shù)文件,M文件的第一行包含F(xiàn)UNCTION功能建立一個函數(shù),可以同MATLAB的庫函數(shù)一樣使用。,五、函數(shù)文件,例編一個繪制圖示波形的函數(shù)。,FUNCTIONYTRITYABSTEPSSS1/NNNN1END,例計算的值,且誤差小于106,FPRINTFS5F\N,S,八、PLOT函數(shù)繪圖函數(shù)CONTINUOUS,TLINSPACE0,4PI,512PLOTT,SINT,T,COST,TITLEMYFIGUREXLABELTLEGENDSINT,COST,,八、PLOT函數(shù)繪圖函數(shù)CONTINUOUS,九、STEM函數(shù)繪圖函數(shù)DISCRETE,K039STEMK,COS09PIKTITLECOS09\PIK,,九、STEM函數(shù)繪圖函數(shù)DISCRETE,COS09?K波形,信號的MATLAB表示,,基本信號的MATLAB表示指數(shù)信號AEAT、指數(shù)序列AK、抽樣函數(shù)SAT、正弦型信號、矩形脈沖信號、三角脈沖信號信號基本運算的MATLAB實現(xiàn)尺度變換、翻轉(zhuǎn)、時移、相加、相乘、差分與求和、微分與積分,一、基本信號的MATLAB表示,指數(shù)信號AEATYAEXPAT指數(shù)序列AK冪運算AK實現(xiàn)正弦型信號內(nèi)部函數(shù)COS和SIN抽樣函數(shù)SATSINCT矩形脈沖信號YRECTPULST,WIDTH三角波脈沖信號YTRIPULST,WIDTH,SKEW,一、基本信號的MATLAB表示,,?CAYINGEXPONENTIAL,T000110A1A04FTAEXPATPLOTT,FT,T00110A1A04FTAEXPATSTEMT,FT,一、基本信號的MATLAB表示,,RECTPULS,T000014T1FTRECTPULST2T,TPLOTT,FTAXIS0,4,05,15,一、基本信號的MATLAB表示,,TRIPULS,T300013FTTRIPULST,4,05PLOTT,FT,FTTRIPULST,4,1,一、基本信號的MATLAB表示,,UNITIMPULSSEQUENCE,K5050DELTAZEROS1,50,1,ZEROS1,50STEMK,DELTA,FUNCTIONF,KIMPSEQK0,K1,K2產(chǎn)生FKDELTAKK0;K11,WLINSPACE6PI,6PI,512NLENGTHWFZEROS1,NFORK1NFKQUAD8SF1,1,1,,,WKENDFIGURE1PLOTW,REALFTITLEXLABEL\OMEGAYLABELFJ\OMEGAFIGURE2PLOTW,REALFSINCW/2/PI2XLABEL\OMEGATITLE計算誤差,例3試用數(shù)值方法近似計算三角波信號的頻譜,運行結(jié)果,利用MATLAB進(jìn)行系統(tǒng)頻域分析,,連續(xù)系統(tǒng)頻響特性的計算周期信號通過系統(tǒng)的響應(yīng)離散系統(tǒng)頻響特性的計算,一、連續(xù)系統(tǒng)頻響特性的計算,B分子多項式系數(shù)A分母多項式系數(shù)W需計算的HJW的抽樣點數(shù)組W中少需包含兩個W的抽樣點。,計算頻響的MATLAB函數(shù),HFREQSB,A,W,,一、連續(xù)系統(tǒng)頻響特性的計算,例1三階歸一化的BUTTERWORTH低通濾波器的系統(tǒng)函數(shù)為,WLINSPACE0,5,200B1A1221HFREQSB,A,WSUBPLOT2,1,1PLOTW,ABSHSUBPLOT2,1,2PLOTW,ANGLEH,試畫出|HJW|和?W。,,一、連續(xù)系統(tǒng)頻響特性的計算,三階BUTTERWORTH低通濾波器的幅度響應(yīng)和相位響應(yīng),,二、周期信號通過系統(tǒng)的響應(yīng),例2周期方波通過RC系統(tǒng)的響應(yīng)。,,二、周期信號通過系統(tǒng)的響應(yīng),例2周期方波通過RC系統(tǒng)的響應(yīng)。,P5_2PERIODICSIGNALPASSLTISYSTEM,T4W02PI/TRC01T60016N51C005XNC0ONES1,LENGTHT?FORN12NEVENHARMONICSAREZEROHABS1/1JRCW0NPHIANGLE1/1JRCW0NXNXNHCOSW0NTPHISINCN05ENDPLOTT,XNXLABELTIMERC,NUM2STRRCGRIDSETGCA,XTICK,5310135,,二、周期信號通過系統(tǒng)的響應(yīng),例2周期方波通過RC系統(tǒng)的響應(yīng)。,三、離散系統(tǒng)頻率響應(yīng)的計算,計算頻率響應(yīng)的MATLAB函數(shù),B分子的系數(shù)A分母系數(shù),W抽樣的頻率點至少2點,W在02P之間,幅頻特性ABS,相頻特性ANGLE,HFREQZB,A,W,三、離散系統(tǒng)頻響特性的計算,,B1,A1109A2109,WLINSPACE0,2PI,512,H1FREQZB,A1,W,H2FREQZB,A2,W,PLOTW/PI,ABSH1,W/PI,ABSH2,,LEGEND\ALPHA09,\ALPHA09,三、離散系統(tǒng)頻響特性的計算,,利用MATLAB進(jìn)行連續(xù)系統(tǒng)的復(fù)頻域分析,,部分分式展開的MATLAB實現(xiàn)HS的零極點與系統(tǒng)特性的MATLAB計算,一、部分分式展開的MATLAB實現(xiàn),R,P,KRESIDUENUM,DEN,NUM,DEN分別為FS分子多項式和分母多項式的系數(shù)向量。,R為部分分式的系數(shù),P為極點,K為多項式的系數(shù)。若為真分式,則K為零。,二、HS的零極點與系統(tǒng)特性的MATLAB計算,計算多項式根ROOTS的函數(shù)可用于計算HS的零極點。,RROOTSN計算多項式N的根,HS零極點分布圖可用PZMAP函數(shù)畫出,調(diào)用形式為,PZMAPSYS,表示畫出SYS所描述系統(tǒng)的零極點圖。,例1用部分分式展開法求FS的反變換。,PROGRAM7_1FORMATRAT將結(jié)果數(shù)據(jù)以分?jǐn)?shù)的形式輸出NUM12DEN1430R,PRESIDUENUM,DEN,運行結(jié)果為R1/6,1/2,2/3P3,1,0,故FS可展開為,例2用部分分式展開法求FS的反變換。,PROGRAM7_2NUM2305DENCONV11,112將因子相乘的形式轉(zhuǎn)換成多項式的形式R,P,KRESIDUENUM,DENMAGRABSR求R的模ANGRANGLER求R的相角,例2用部分分式展開法求FS的反變換。,運行結(jié)果為,R2000011339I,2000011339I,30000P0500013229I,0500013229I,10000K2MAGR2299,22991,30000ANGR26258,26258,0,故FS可展開為,例3試畫出系統(tǒng)的零極點分布圖,求其單位沖激響應(yīng)HT和頻率響應(yīng)HJ?,并判斷系統(tǒng)是否穩(wěn)定。,NUM1DEN1221SYSTFNUM,DENPOLESROOTSDENFIGURE1PZMAPSYST000210HIMPULSENUM,DEN,TFIGURE2PLOTT,HTITLEIMPULSERESPONEH,WFREQSNUM,DENFIGURE3PLOTW,ABSHXLABEL\OMEGATITLEMAGNITUDERESPONE,運行結(jié)果,利用MATLAB進(jìn)行離散系統(tǒng)的Z域分析,,部分分式展開的MATLAB實現(xiàn)HZ的零極點與系統(tǒng)特性的MATLAB計算,一、部分分式展開的MATLAB實現(xiàn),R,P,KRESIDUEZNUM,DEN,NUM,DEN分別為FZ分子多項式和分母多項式的系數(shù)向量。,R為部分分式的系數(shù),P為極點,K為多項式的系數(shù)。若為真分式,則K為零。,二、HZ的零極點與系統(tǒng)特性的MATLAB計算,利用TF2ZP函數(shù)計算HZ的零極點,調(diào)用形式為,Z,P,KTF2ZPB,A,HZ零極點分布圖可用ZPLANE函數(shù)畫出,調(diào)用形式為,ZPLANEB,A,B和A分別為HZ分子多項式和分母多項式的系數(shù)向量。,返回值Z為零點、P為極點、K為增益常數(shù)。,例1將FZ用部分分式展開。,PROGRAM8_1NUM18DEN18341R,P,KRESIDUEZNUM,DEN,運行結(jié)果為R03600,02400,04000P05000,03333,03333K,故FZ可展開為,例2試畫出系統(tǒng)的零極點分布圖,求其單位沖激響應(yīng)HK和頻率響應(yīng)HEJW。,PROGRAM8_2B121A105000503FIGURE1ZPLANEB,ANUM0121DEN105000503HIMPZNUM,DENFIGURE2STEMHXLABELKTITLEIMPULSERESPONEH,WFREQZNUM,DENFIGURE3PLOTW/PI,ABSHXLABELFREQUENCY\OMEGATITLEMAGNITUDERESPONE,運行結(jié)果,利用MATLAB進(jìn)行系統(tǒng)狀態(tài)變量分析,,微分方程到狀態(tài)方程的轉(zhuǎn)換狀態(tài)方程系統(tǒng)函數(shù)矩陣HS的計算MATLAB求解連續(xù)系統(tǒng)的狀態(tài)方程MATLAB求解離散系統(tǒng)的狀態(tài)方程,一、微分方程到狀態(tài)方程的轉(zhuǎn)換,NUM,DEN分別表示系統(tǒng)函數(shù)HS的分子和分母多項式;A,B,C,D分別為狀態(tài)方程的矩陣。,A,B,C,DTF2SSNUM,DEN,二、狀態(tài)方程系統(tǒng)函數(shù)矩陣HS的計算,A,B,C,D分別表示狀態(tài)方程的矩陣。K表示函數(shù)SS2TF計算的與第K個輸入相關(guān)的系統(tǒng)函數(shù),即HS的第K列。NUM表示HS第K列的M個元素的分子多項式DEN表示HS公共的分母多項式。,NUM,DENSS2TFA,B,C,D,K,,三、MATLAB求解連續(xù)系統(tǒng)的狀態(tài)方程,SYS由函數(shù)SS構(gòu)造的狀態(tài)方程模型T需計算的輸出樣本點,T0DTTFINALF,K系統(tǒng)第K個輸入在T上的抽樣值X0系統(tǒng)的初始狀態(tài)可缺省Y,K系統(tǒng)的第K個輸出TO實際計算時所用的樣本點;X系統(tǒng)的狀態(tài),獲得連續(xù)系統(tǒng)狀態(tài)方程的計算機(jī)表示模型,SYSSSA,B,C,D,求解狀態(tài)方程,Y,TO,XLSIMSYS,F,T,X0,,四、MATLAB求解離散系統(tǒng)的狀態(tài)方程,SYS由函數(shù)SS構(gòu)造的狀態(tài)方程模型F,K系統(tǒng)第K個輸入序列X0系統(tǒng)的初始狀態(tài)可缺省Y,K系統(tǒng)的第K個輸出N序列的下標(biāo)X系統(tǒng)的狀態(tài),獲得離散狀態(tài)方程的計算機(jī)表示模型,SYSSSA,B,C,D,,求解狀態(tài)方程,Y,N,XLSIMSYS,F,,X0,例1寫出系統(tǒng)的狀態(tài)方程。,由A,B,C,DTF2SS1,1510可得,所以系統(tǒng)的狀態(tài)方程為,C0D0,例2已知某連續(xù)系統(tǒng)的狀態(tài)方程和輸出方程為,其初始狀態(tài)和輸入分別為,求該系統(tǒng)的系統(tǒng)函數(shù)矩陣HS和輸出。,計算系統(tǒng)函數(shù)矩陣HS,A2301B0110C1101D1010NUM1,DEN1SS2TFA,B,C,D,1NUM2,DEN2SS2TFA,B,C,D,2運行結(jié)果NUM1101120DEN1112NUM2011000DEN2112所以系統(tǒng)函數(shù)矩陣HS為,計算輸出,PROGRAM9_1A2301B0110C1101D1010X021DT001T0DT2F,1ONESLENGTHT,1F,2EXP3TSYSSSA,B,C,DYLSIMSYS,F,T,X0SUBPLOT2,1,1PLOTT,Y,1,RYLABELY1TXLABELTSUBPLOT2,1,2PLOTT,Y,2YLABELY2TXLABELT,運行結(jié)果,例3已知某離散系統(tǒng)的狀態(tài)方程和輸出方程為,其初始狀態(tài)和輸入分別為,求該系統(tǒng)的輸出。,計算輸出,PROGRAM9_2A0123B01C1121DZEROS2,1X011N10FONES1,NSYSSSA,B,C,D,YLSIMSYS,F,,X0SUBPLOT2,1,1Y1Y,1STEM0N1,Y1XLABELKYLABELY1SUBPLOT2,1,2Y2Y,2STEM0N1,Y2XLABELKYLABELY2,運行結(jié)果,
下載積分: 4 賞幣
上傳時間:2024-01-06
頁數(shù): 97
大?。?1.59(MB)
子文件數(shù):