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