《MATLAB基礎(chǔ)》課件_第1頁(yè)
《MATLAB基礎(chǔ)》課件_第2頁(yè)
《MATLAB基礎(chǔ)》課件_第3頁(yè)
《MATLAB基礎(chǔ)》課件_第4頁(yè)
《MATLAB基礎(chǔ)》課件_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MATLAB基礎(chǔ),1,MATLAB基礎(chǔ)及控制系統(tǒng)輔助設(shè)計(jì),武漢大學(xué)動(dòng)機(jī)學(xué)院 2007.4,MATLAB基礎(chǔ),2,第一部分 MATLAB 基礎(chǔ)及其基本應(yīng)用,第二部分 模糊控制系統(tǒng)設(shè)計(jì)模糊邏輯工具箱應(yīng)用,模糊邏輯控制系統(tǒng)特點(diǎn) 模糊邏輯控制系統(tǒng)基本結(jié)構(gòu)原理 使用GUI工具建立FIS系統(tǒng) 與Simulink一起工作,MATLAB 基礎(chǔ) MATLAB的程序設(shè)計(jì) MATLAB控制系統(tǒng)工具箱及其應(yīng)用 SIMULINK與水輪機(jī)調(diào)節(jié)系統(tǒng)的仿真,本部分討論MATLAB的基本知識(shí)及用于控制系統(tǒng)仿真和簡(jiǎn)單輔助分析的基本方法。選取的實(shí)例主要為水輪機(jī)調(diào)節(jié)系統(tǒng)。,本部分主要討論MATLAB模糊邏輯工具箱在模糊控制系統(tǒng)設(shè)計(jì)中

2、的應(yīng)用。,MATLAB基礎(chǔ),3,第三部分 神經(jīng)網(wǎng)絡(luò)與應(yīng)用神經(jīng)網(wǎng)絡(luò)工具箱應(yīng)用,本部分主要討論MATLAB神經(jīng)網(wǎng)絡(luò)工具箱及其GUI工具的應(yīng)用。,感知器(Perceptron) 線性神經(jīng)網(wǎng)絡(luò)(Linear network) BP網(wǎng)絡(luò) (Back Propagation network) 徑向基函數(shù)網(wǎng)絡(luò)(Radial Base Function network, RBF) 神經(jīng)網(wǎng)絡(luò)圖形用戶(hù)界面應(yīng)用 神經(jīng)網(wǎng)絡(luò)Simulink模型設(shè)計(jì),MATLAB基礎(chǔ),4,第一部分 MATLAB基礎(chǔ)及其基本應(yīng)用,第一章 MATLAB 基礎(chǔ),參考教材:,MATLAB控制系統(tǒng)輔助設(shè)計(jì)工程師工具軟件應(yīng)用系列歐陽(yáng)黎明編著,國(guó)防工

3、業(yè)出版社。 Matlab神經(jīng)網(wǎng)絡(luò)與應(yīng)用,董長(zhǎng)虹編著,國(guó)防工業(yè)出版社。 Matlab模糊邏輯工具箱的分析與應(yīng)用,聞新等編著,科學(xué)出版社。 其它相關(guān)教材,MATLAB基礎(chǔ),5,11 MATLAB與控制系統(tǒng)仿真,111 控制系統(tǒng)與系統(tǒng)仿真,一般來(lái)說(shuō),控制系統(tǒng)仿真過(guò)程可以分為五個(gè)步驟:,(1)系統(tǒng)建模:根據(jù)要分析的控制系統(tǒng),建立相應(yīng)的數(shù)學(xué)模型。,(2)仿真算法:找到合適的仿真算法。 MATLAB已經(jīng)被確認(rèn)為準(zhǔn)確、可靠的科學(xué)計(jì)算標(biāo)準(zhǔn)軟件。,(3)仿真語(yǔ)言:應(yīng)用仿真語(yǔ)言編寫(xiě)計(jì)算程序。MTLAB語(yǔ)言有非常突出的優(yōu)點(diǎn),是控制系統(tǒng)仿真首選的仿真語(yǔ)言。,(4)仿真計(jì)算:根據(jù)初步的仿真結(jié)果對(duì)該數(shù)學(xué)模型進(jìn)行驗(yàn)證。,(

4、5)系統(tǒng)仿真:進(jìn)行系統(tǒng)仿真,并認(rèn)真地分析仿真的結(jié)果。,仿真算法、仿真語(yǔ)言和仿真程序構(gòu)成了數(shù)字仿真軟件。,確認(rèn)數(shù)學(xué)模型的正確性、仿真算法的可行性、仿真程序的準(zhǔn)確性和可靠性,最后編制成一個(gè)成熟的仿真軟件。,MATLAB基礎(chǔ),6,控制系統(tǒng)仿真在教學(xué)實(shí)踐中應(yīng)用越來(lái)越普遍。,對(duì)于改進(jìn)教學(xué)效果、給學(xué)生提供形象化的信息、激發(fā)學(xué)生的學(xué)習(xí)興趣、提高學(xué)生的自學(xué)能力、加強(qiáng)學(xué)生對(duì)授課內(nèi)容的理解等無(wú)疑是十分有益的。有利于對(duì)學(xué)生分析問(wèn)題的能力和解決問(wèn)題的能力的培養(yǎng)。,學(xué)生掌握了系統(tǒng)仿真的方法以后,不但使他加強(qiáng)了對(duì)所學(xué)課程的理解,同時(shí)還便于鉆研一些他本人感興趣的問(wèn)題,有利于部分學(xué)有余力的學(xué)生進(jìn)一步自學(xué)的要求。,在美國(guó)和歐洲

5、大學(xué)中,九十年代將MATLAB正式列入了電氣工程專(zhuān)業(yè)研究生和本科生的教學(xué)計(jì)劃, MATLAB是必須掌握的基本工具。,在設(shè)計(jì)研究單位和工業(yè)界,MATLAB也成為工程師們應(yīng)該掌握的一種工具,是被認(rèn)作進(jìn)行高效研究、開(kāi)發(fā)的首選軟件工具。,MATLAB基礎(chǔ),7,1. 1. 2 MATLAB及其課程學(xué)習(xí),MATLAB 具有計(jì)算機(jī)語(yǔ)言的屬性,因此可以看作是一種使用方便、語(yǔ)句效率很高、更接近于人們思維和表達(dá)習(xí)慣的一種計(jì)算機(jī)語(yǔ)言。 MATLAB 更可以被認(rèn)為是一種進(jìn)行科學(xué)研究的強(qiáng)有力工具。理由是具有由各領(lǐng)域頂尖科學(xué)家參與開(kāi)發(fā)的、功能豐富的工具箱。在這些工具箱的支持下,人們?cè)诟鱾€(gè)研究領(lǐng)域幾乎都可以找到它的應(yīng)用。

6、與學(xué)習(xí)其它課程有所不同,MATLAB牽扯面極廣,幾乎涉及現(xiàn)代科學(xué)的所有領(lǐng)域,因此,學(xué)習(xí)MATLAB必須與個(gè)人所從事的學(xué)科相結(jié)合。 與學(xué)習(xí)計(jì)算機(jī)語(yǔ)言類(lèi)似,必須勤于實(shí)踐。挖掘其功能為科學(xué)研究服務(wù),主要要靠自己努力。 本課程主要側(cè)重于怎樣做,僅在必要時(shí)簡(jiǎn)要說(shuō)明為什么。,MATLAB基礎(chǔ),8,113 MATLAB的發(fā)展史,MATLAB名字由MATrix和 LABoratory 兩詞的前三個(gè)字母組合而成。那是20世紀(jì)七十年代,時(shí)任美國(guó)新墨西哥大學(xué)計(jì)算機(jī)科學(xué)系主任的Cleve Moler出于減輕學(xué)生編程負(fù)擔(dān)的動(dòng)機(jī),為學(xué)生設(shè)計(jì)了一組調(diào)用LINPACK和EISPACK矩陣軟件工具包庫(kù)程序的的“通俗易用”的接口

7、,此即用FORTRAN編寫(xiě)的萌芽狀態(tài)的MATLAB。,1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把MATLAB正式推向市場(chǎng)。從這時(shí)起,MATLAB的內(nèi)核采用C語(yǔ)言編寫(xiě),而且除原有的數(shù)值計(jì)算能力外,還新增了數(shù)據(jù)圖視功能。,1997年仲春,MATLAB5.0版問(wèn)世,緊接著是5.1、5.2,以及和1999年春的5.3版。當(dāng)前的最新版為7.x。現(xiàn)今的MATLAB擁有更豐富的數(shù)據(jù)類(lèi)型和結(jié)構(gòu)、更友善的面向?qū)ο?、更加快速精良的圖形可視、更廣博的數(shù)學(xué)和數(shù)據(jù)分析資源、更多的應(yīng)用開(kāi)發(fā)工具。,MATLAB基礎(chǔ),9,114 MATLAB語(yǔ)言的主要特點(diǎn),(1)具有

8、豐富的數(shù)學(xué)功能,包括矩陣各種運(yùn)算。如:正交變換、三角分解、特征值、常見(jiàn)的特殊矩陣等。,包括各種特殊函數(shù)。如:貝塞爾函數(shù)、勒讓德函數(shù)、伽碼函數(shù)、貝塔函數(shù)、橢圓函數(shù)等。,包括各種數(shù)學(xué)運(yùn)算功能。如:數(shù)值微分、數(shù)值積分、插值、求極值、方程求根、FFT 、常微分方程的數(shù)值解等。,(2)具有很好的圖視系統(tǒng),可方便地畫(huà)出兩維和三維圖形。,圖形用戶(hù)界面GUI制作工具,可以制作用戶(hù)菜單和控件。使用者可以根據(jù)自己的需求編寫(xiě)出滿意的圖形界面。,高級(jí)圖形處理。如:色彩控制、句柄圖形、動(dòng)畫(huà)等。,MATLAB基礎(chǔ),10,113 MATLAB語(yǔ)言的主要特點(diǎn)(續(xù)),(3)可以直接處理聲言和圖形文件。,(4)具有若干功能強(qiáng)大的

9、應(yīng)用工具箱。,(5)使用方便,具有很好的擴(kuò)張功能。,聲言文件。如: WAV文件(例:wavread,sound等)。,圖形文件。如: bmp 、gif 、 pcx 、tif 、jpeg等文件。,對(duì)于控制系統(tǒng)的應(yīng)用如:SIMULINK、Control、 Neural Network、 Fuzzy Logic等多種工具箱。,可以把M文件轉(zhuǎn)變?yōu)楠?dú)立于平臺(tái)的EXE可執(zhí)行文件。,使用MATLAB語(yǔ)言編寫(xiě)的程序可以直接運(yùn)行,無(wú)需編譯。,MATLAB的應(yīng)用接口程序API是MATLAB提供的十分重要的組件 ,由 一系列接口指令組成 。用戶(hù)就可在FORTRAN或C中 , 把MATLAB當(dāng)作計(jì)算引擎使用 。,MA

10、TLAB基礎(chǔ),11,113 MATLAB語(yǔ)言的主要特點(diǎn)(續(xù)),(6)具有很好的幫助功能,提供十分詳細(xì)的幫助文件(PDF 、HTML 、demo文件)。,聯(lián)機(jī)查詢(xún)指令:help指令(例:help elfun,help exp,help simulink),lookfor關(guān)鍵詞(例: lookfor fourier )。,MATLAB基礎(chǔ),12,12 MATLAB簡(jiǎn)介,1. 2. 1 MATLAB的基本結(jié)構(gòu)及環(huán)境,就其使用效果而言,MATLAB可以被認(rèn)為是一種解釋性編程語(yǔ)言。其優(yōu)點(diǎn)在于語(yǔ)法簡(jiǎn)單,程序易于調(diào)試,交互性,且單一語(yǔ)句的效率很高。正因?yàn)槿绱?,它被稱(chēng)為第四代編程語(yǔ)言。在圖121中的語(yǔ)言?xún)?nèi)核及

11、編譯控制程序運(yùn)行部分提供了該語(yǔ)言的運(yùn)行環(huán)境。圖121,從外部表現(xiàn)來(lái)說(shuō),在Windows98/2000/XP系統(tǒng)環(huán)境下安裝好MATLAB后,雙擊MATLAB圖標(biāo)或從“開(kāi)始”菜單打開(kāi)MATLAB,即可進(jìn)入MATLAB集成環(huán)境,也就是MATLAB命令窗(MATLAB Command Window)。在后臺(tái),與該命令窗對(duì)應(yīng)的是其工作空間(Workspace)。MATLAB的所有變量,運(yùn)算結(jié)果均存貯在這個(gè)空間中,并由該空間管理我們所有輸入的命令和函數(shù)調(diào)用。命令窗外形如圖122 所示。,MATLAB基礎(chǔ),13,1. 2. 2 MATLAB的主要功能,MATLAB發(fā)展至今,已不僅僅是單純矩陣運(yùn)算的數(shù)學(xué)處理軟

12、件,其開(kāi)放式的結(jié)構(gòu)吸引了許多優(yōu)秀人才編寫(xiě)M函數(shù)和工具箱,目前已經(jīng)滲透到了工程計(jì)算和設(shè)計(jì)的各個(gè)領(lǐng)域。其中與控制系統(tǒng)設(shè)計(jì)與仿真相關(guān)的功能大致有以下各項(xiàng):,一數(shù)值計(jì)算及分析 (1) 向量、矩陣的運(yùn)算分析。 (2) 復(fù)數(shù)運(yùn)算及分析 (3) 微分方程的求解 (4) 稀疏矩陣的運(yùn)算 (5) 特殊函數(shù)的計(jì)算機(jī)分析 (6) 快速傅里葉變換及信號(hào)處理矩陣計(jì)算 (7) 數(shù)據(jù)分析及統(tǒng)計(jì)計(jì)算,二程序語(yǔ)言及算法實(shí)現(xiàn) (1) 程序流程控制語(yǔ)句 (2) C語(yǔ)言產(chǎn)生器,MATLAB基礎(chǔ),14,(3) 文件管理,三MATLAB繪圖功能 (1) 二維圖形繪制 (2) 特殊坐標(biāo)圖形繪制及修改 (3) 三維坐標(biāo)圖形繪制,四MATLA

13、B與高級(jí)語(yǔ)言接口 (1) MATLAB與C語(yǔ)言接口及庫(kù)函數(shù) (2) MATLAB與C+語(yǔ)言接口及庫(kù)函數(shù) (3) MATLAB編譯器,五Simulink 建模與仿真,六功能強(qiáng)大的工具箱 (1) 控制系統(tǒng)工具箱(Control System Toolbox) (2) 魯棒控制工具箱(Robust Control Toolbox) (3) 模型預(yù)測(cè)控制工具箱(Model Predictive Control Toolbox) (4) mu分析與校正工具箱(mu Analysis and Systhesis Toolbox) (5)多變量系統(tǒng)頻域設(shè)計(jì)工具箱(MultiVariable Frequenc

14、y Design Toolbox),MATLAB基礎(chǔ),15,(6) 定量反饋控制工具箱(Quantitative Feedback Theory Toolbox) (7)頻域系統(tǒng)辨識(shí)工具箱(Frequency Domain System Identifica-tion Toolbox) (8) 系統(tǒng)辨識(shí)工具箱(System Identification Toolbox) (9) 神經(jīng)網(wǎng)工具箱(Neural Network Toolbox) (10) 小波分析工具箱(Wavelet Toolbox) (11) 最優(yōu)化工具箱(Optimization Toolbox) (12) 偏微分方程工具箱(

15、Partial Differential Equation Toolbox) (13) 信號(hào)處理工具箱(Signal Processing Toolbox) (14) 圖像處理工具箱(1mage Processing Toolbox) (15) 擴(kuò)展符號(hào)數(shù)學(xué)工具箱(Extended Symbolic Math Toolbox),1. 2. 3 MATLAB的主要管理命令,help 命令: help exp,help simulink等; lookfor命令: lookfor 關(guān)鍵詞,例: lookfor fourier; demo: 運(yùn)行演示程序;,MATLAB基礎(chǔ),16,who命令:列出當(dāng)前

16、工作空間的變量; whos 命令: 列出當(dāng)前工作空間的變量(長(zhǎng)表); clear 命令:清除工作空間的所有變量; save 和 load命令:,在 MATLAB的Command Window中可以方便地將數(shù)據(jù)存成文件,也可以隨時(shí)調(diào)用數(shù)據(jù)文件。這可通過(guò)選擇Command Window的菜單項(xiàng)File Save Workspace As來(lái)實(shí)現(xiàn)。注意,所有MATLAB的數(shù)據(jù)文件后綴名必須為mat, 即:XXX.mat。 數(shù)據(jù)的存儲(chǔ)和調(diào)用,除了菜單操作之外,還可以直接在工作空間中輸入命令。鍵入命令save,則將工作空間中所有變量存入到磁盤(pán)上的MATLAB.mat文件中,當(dāng) MATLAB再被運(yùn)行時(shí),鍵入

17、命令1oad,則將這些變量從MATLAB.mat文件中調(diào)出并重新裝入到MATLAB的工作空間中去。,MATLAB基礎(chǔ),17,save和1oad命令的后邊也可以跟文件名和指定的變量名,若僅是直接使用save和load命令,則只能將所有變量存入到MATLAB.mat文件中和從MATLAB.mat文件中將所有變量重新裝人工作空間,而加上文件名和指定的變量名后可實(shí)現(xiàn)好幾種功能,如:Save sy將所有變量存入到sy.mat文件中;1oad sy 將變量從sy.mat文件中調(diào)出來(lái),放入當(dāng)前的工作空間中;若欲存入指定的變量到某個(gè)文件中,可使用save sy x y;load sy x y將存入的指定變量

18、x,y從 sy.mat文件中重新調(diào)出到當(dāng)前工作空間中。此外,SIMULINK也可產(chǎn)生.mat文件,其調(diào)用方法與上述方法相同。,1. 2. 4 MATLAB的基本使用方法,有三種方法使用MATLAB:,(1)演草紙式的數(shù)學(xué)運(yùn)算,MATLAB基礎(chǔ),18,用MATLAB進(jìn)行數(shù)學(xué)運(yùn)算,就像在計(jì)算器上算算術(shù)一樣簡(jiǎn)單方便。因此,MATLAB被譽(yù)為“演草紙式的科學(xué)計(jì)算語(yǔ)言”。例如,在MATLAB的Command Window下可以極為方便地進(jìn)行下列算術(shù)運(yùn)算: 4+6+2 ans =12 注意,輸入who命令可檢查在工作空間中所建立的變量名。當(dāng)前工作空間中的變量ans為默認(rèn)變量,這意味著如果我們沒(méi)有指定變量的

19、話,所有的運(yùn)算結(jié)果都將賦值給ans。,(2)在Command Window上直接輸入MATLAB程序命令語(yǔ)句如: a=4; b=6; c=2; d=a+b+c; d=12,MATLAB基礎(chǔ),19,(3)用編輯器編寫(xiě)程序(腳本文件)然后運(yùn)行 在Command Window下選擇菜單FileNewM-file 打開(kāi)編輯器Editor/Debugger; 在Editor/Debugger中輸入程序命令; 在Editor/Debugger上選擇菜單Filesave as, 所有MATLAB 的可運(yùn)行程序后綴名必須為m, 即:XXX.m; 在Command Window下選擇菜單FileRun-M fi

20、le, 即可運(yùn)行。,1. 2. 5 MATLAB的基本語(yǔ)句結(jié)構(gòu),MATLAB語(yǔ)言能夠完成高級(jí)計(jì)算機(jī)語(yǔ)言的絕大部分功能,語(yǔ)法和語(yǔ)句結(jié)構(gòu)也非常類(lèi)似,因此,有高級(jí)語(yǔ)言基礎(chǔ)的讀者能夠很快適應(yīng)MATLAB的風(fēng)格。 一、變量,作為MATLAB的最基本運(yùn)算單元,變量是具體運(yùn)算和編寫(xiě)函數(shù)的基礎(chǔ)。與高級(jí)語(yǔ)言類(lèi)似,變量的基本賦值語(yǔ)句結(jié)構(gòu)是: 變量名=表達(dá)式,MATLAB基礎(chǔ),20,變量名可以是字母或數(shù)字,但首字符必須是字母。表達(dá)式可以是任意合法的數(shù)字、函數(shù)及運(yùn)算符。如果表達(dá)式?jīng)]有命名,則MATLAB把結(jié)果存儲(chǔ)和顯示在ans變量中,以備查詢(xún)和使用。請(qǐng)看下例: 例ex1_1 在MATLAB環(huán)境下求解表達(dá)式:,求解過(guò)程

21、:在MATLAB Command Window下直接鍵入: x=exp(0.5)+sin(pi/6)*log(sqrt(10) 可得到: x= 2.2244 或直接輸入 exp(0.5)+sin(pi/6)*log(sqrt(10) 可得到: ans= 2.2244,MATLAB基礎(chǔ),21,通過(guò)上述例子可以很快熟悉MATLAB中變量的使用方法,事實(shí)上,通過(guò)這個(gè)例子還會(huì)發(fā)現(xiàn)MATLAB可以作為一個(gè)功能強(qiáng)大的函數(shù)計(jì)算器使用。關(guān)于變量的使用還有一些需要說(shuō)明的問(wèn)題:,MATLAB對(duì)變量名的大小寫(xiě)敏感,大小寫(xiě)代表不同的變量。 (2) 顯示結(jié)果的缺省格式是5位有效數(shù)字,命令“format short e”

22、、“format long”和“format long e”的輸出格式分別為5位浮點(diǎn)數(shù)、15位定點(diǎn)數(shù)和15為浮點(diǎn)數(shù)。 (3) MATLAB中有一些保留的常量,例如inf表示無(wú)窮大。MATLAB依照IEEE的標(biāo)準(zhǔn)允許除數(shù)為0,產(chǎn)生這種情況時(shí)只給出警告,不中止程序,結(jié)果為inf。另一個(gè)常量NaN表示非數(shù)字(Not a Number),一般是由inf/inf或0/0產(chǎn)生的。這些特點(diǎn)使得MATLAB比一般的高級(jí)語(yǔ)言有著更高的容錯(cuò)性,更加靈活可靠。 (4) 變量在應(yīng)用之前不必是維數(shù)確定的。在MATLAB中,變量一旦被采用,會(huì)自動(dòng)產(chǎn)生(如果必要,變量的維數(shù)以后還可以改變)。,MATLAB基礎(chǔ),22,二、運(yùn)

23、算符和特殊字符 (1) “+”:加號(hào),用于標(biāo)量、向量和矩陣的相加。例如,A+B,A和B兩矩陣必須有相同的大小,或其中之一為標(biāo)量,標(biāo)量可以與任意大小的矩陣相加。 (2) “”:減號(hào),用于標(biāo)量、向量和矩陣的相減。例如, AB,A和B兩矩陣必須有相同的大小,或其中之一為標(biāo)量,標(biāo) 量可以與任意大小的矩陣相減。 (3) “*”:矩陣乘法(注意標(biāo)量和向量也是矩陣的特殊形式)。例如CA*B為兩矩陣線性代數(shù)的乘積,即對(duì)于非標(biāo)量A和B,A的列數(shù)必須與B的行數(shù)相等。 (4) “ .* ”:數(shù)組乘積。A .* B表示數(shù)組A和數(shù)組B的對(duì)應(yīng)元素相乘;A和B必須大小相同,或者其中之一為標(biāo)量。 (5) “”:斜線或矩陣右除

24、,B/A近似等于B*inv(A)。 (6) “./ ”:數(shù)組右除。A ./ B表示矩陣元素A (i, j)/B( i, j), A和B必須大小相同,或者其中之一為標(biāo)量。 (7)“”:反斜線或左除。如果A為方陣,AB近似等于inv(A)*B。,MATLAB基礎(chǔ),23,(8) “.”: 數(shù)組左除。A.B表示矩陣元素B (i, j)/A( i, j), A與B必須大小相同,或者其中之一為標(biāo)量。 (9) “”:矩陣冪。例如Xp,如果p為標(biāo)量,表示X的p次冪。X和p不能同為矩陣。 (10) “.”:數(shù)組冪。A . B表示矩陣元素A (i, j)的B(i, j) 次冪,A與B必須大小相同,或者其中之一為標(biāo)

25、量。 (11) “ ”:矩陣轉(zhuǎn)置。A表示矩陣A的線性代數(shù)轉(zhuǎn)置。對(duì)于復(fù)矩陣,表示復(fù)共軛轉(zhuǎn)置。 (12) “ : ”:冒號(hào)操作符。冒號(hào)操作符在MATLAB中起著重要作用。該操作符用來(lái)建立矢量,賦予矩陣下標(biāo)和規(guī)定迭代。例如,j:k表示(j j+1 k),A(:,j)表示矩陣A的第j列,A(i,:)表示矩陣A的第i行。 (13) 關(guān)系運(yùn)算符:,分別表示小于”、 “大于”、 “小于等于”、“大于等于”、“等于”、“不等于”;數(shù)組進(jìn)行關(guān)系運(yùn)算時(shí),對(duì)每個(gè)元素進(jìn)行比較,運(yùn)算結(jié)果是一個(gè)與數(shù)組大小一樣的由0和1構(gòu)成的數(shù)組。,四種運(yùn)算,只比較操作數(shù)實(shí)部,而,既比較實(shí)部又比較虛部。,MATLAB基礎(chǔ),24,(14)

26、邏輯運(yùn)算符:|, ”分號(hào)操作符: 分號(hào)用來(lái)取消打印。在MATLAB中,如果一行語(yǔ)句和命令后沒(méi)有任何符號(hào),則該語(yǔ)句或命令產(chǎn)生的結(jié)果均將在屏幕上打印出來(lái)。在有些情況下這是必要的,但在有些情況下又是多余的,而且要大大降低程序的運(yùn)行效率。如果語(yǔ)句的最后一個(gè)符號(hào)是分號(hào),則打印被取消,但是命令仍在執(zhí)行,而結(jié)果不再顯示。此外,在輸入矩陣時(shí),除非是最后一行,分號(hào)用來(lái)指示一行的結(jié)束。,三、矩陣和向量的賦值方法,(1) 矩陣和向量的賦值方法,MATLAB基礎(chǔ),25,要輸入一個(gè)向量如:a=1 2 3 4,可以直接鍵入 a=1 2 3 4或 a=1 2 3 4。 要輸入一個(gè)矩陣如:,可以直接鍵入A=1 2 3; 4

27、5 6; 7 8 9。在MATLAB中,應(yīng)十分注意“:”的用法,它有時(shí)會(huì)使問(wèn)題得到簡(jiǎn)化。如鍵入x1:4即產(chǎn)生一個(gè)l4單位增量的行向量: x=1 2 3 4 又如:,y=0:pi/4:pi 表示: y=0 0.7854 1.5708 2.3562 3.1416 行向量 z=7:-1:2 表示: z=7 6 5 4 3 2行向量,MATLAB基礎(chǔ),26,下面的運(yùn)算: x=0:0.2:1.0; y=exp(-x).*sin (x); x y 產(chǎn)生的結(jié)果為: ans = 0 0 0.2000 0.1627 0.4000 0.2610 0.6000 0.3099 0.8000 0.3223 1.0000

28、 0.3096,上述矩陣的第一列為向量x,第二列為向量y。請(qǐng)注意這里出現(xiàn)的 “.*”號(hào),正如前面所提到的,它僅表示向量或矩陣元素間的乘運(yùn)算,而不是通常意義上的向量或矩陣的乘運(yùn)算。,MATLAB基礎(chǔ),27,(2) 矩陣的下標(biāo),設(shè)有矩陣,則有A(3,3)=9, A(1,3)=4;A(3,1)=3等。 設(shè)B為一個(gè)1010的矩陣,則B(1:5,3)指B陣第三列中前五行構(gòu)成的子陣(這里是一個(gè)向量)。B(1:5,7:10)指B陣前五行最后四列構(gòu)成的子陣(這里是一個(gè)矩陣)。,四、特殊矩陣及其賦值方法,在控制系統(tǒng)設(shè)計(jì)領(lǐng)域要用到許多特殊形式的矩陣,例如求解傳遞函數(shù)最小實(shí)現(xiàn)時(shí)用到的Hankel矩陣,系統(tǒng)參數(shù)和階次

29、辨識(shí)時(shí)用到的隨機(jī)矩陣等等。MATLAB提供了許多生成和操作這些,MATLAB基礎(chǔ),28,特殊矩陣的函數(shù),并且都是考慮到各種極端的情況,經(jīng)過(guò)專(zhuān)業(yè)人員測(cè)試通過(guò)的,可以放心的使用。下面有選擇的簡(jiǎn)要介紹幾種重點(diǎn)的特殊幾種函數(shù)。,(1) 單位矩陣 單位矩陣可以說(shuō)是用途最廣泛的矩陣之一,MATLAB提供了一條eye()函數(shù)可以用來(lái)生成指定維數(shù)的單位矩陣。這條函數(shù)有兩種調(diào)用格式,第一種是eye (n),生成n維的單位矩陣;第二種是eye (m,n)生成一個(gè) m x n 維的矩陣,其主對(duì)角元為1,其余元素為零。,(2) 零矩陣或向量 矩陣或數(shù)組所有元素為0。 Azeros (n) 返回一個(gè)nxn階零矩陣 A=

30、zeros (m, n) 返回一個(gè)mxn階零矩陣,MATLAB基礎(chǔ),29,MATLAB提供了一條函數(shù)diag(),可以用來(lái)生成對(duì)角矩陣。最簡(jiǎn)單的調(diào)用格式為 diag (V),V是維數(shù)為n的向量。,(3) 對(duì)角矩陣 所謂對(duì)角矩陣就是主對(duì)角元為非零元素,其余元素均為零的方陣,在數(shù)學(xué)文獻(xiàn)中一般記為:,(4) 隨機(jī)矩陣 所謂隨機(jī)矩陣就是矩陣的各個(gè)元素是隨機(jī)生成的。MATLAB的rand()函數(shù)生成的隨機(jī)矩陣的元素滿足0, 1區(qū)間上的均勻分布。其調(diào)用格式為,MATLAB基礎(chǔ),30,A= rand (n) 返回一個(gè)nxn, 其元素偽隨機(jī)數(shù)的方陣。 A= rand (m, n) 返回一個(gè)mxn, 其元素偽隨

31、機(jī)數(shù)的矩陣。,m和n分別為隨機(jī)矩陣的行數(shù)和列數(shù)。熟悉仿真算法的同學(xué)清楚,由計(jì)算機(jī)生成的隨機(jī)數(shù)只是偽隨機(jī)數(shù),為了降低數(shù)據(jù)的相關(guān)性應(yīng)該隨時(shí)更換隨機(jī)數(shù)發(fā)生器的種子數(shù)。在MATLAB中,這種想法可以通過(guò)調(diào)用該函數(shù)的 rand (seed,s)格式來(lái)實(shí)現(xiàn)。其中s是標(biāo)量,可以通過(guò)不同的s值來(lái)改變機(jī)器隨機(jī)數(shù)發(fā)生器的種子數(shù),s = 0則設(shè)回缺省值。如: rand (1, 4) ans = 0.2190 0.0470 0.6789 0.6793 rand (seed, 1) rand (1, 4) ans = 0.5129 0.4605 0.3504 0.0950 rand (seed, 0),MATLAB基礎(chǔ)

32、,31,rand (1, 4) ans = 0.2190 0.0470 0.6789 0.6793 如果希望得到正態(tài)分布的隨機(jī)矩陣,則應(yīng)該調(diào)用randn()函數(shù),其格式與rand()函數(shù)基本類(lèi)似,缺省是均值為0,方差為1的正態(tài)分布的隨機(jī)數(shù)。,(5) Vandermonde 矩陣 (范德蒙矩陣) 將控制系統(tǒng)的可控規(guī)范型化為特征值規(guī)范型時(shí),所用到的變換矩陣就是由原規(guī)范型的系數(shù)矩陣特征值組成的范德蒙(Vandermonde)矩陣??刂祁I(lǐng)域使用的Vandermonde矩陣的具體形式為:,MATLAB基礎(chǔ),32,MATLAB提供了一條實(shí)現(xiàn)此Vandermonde矩陣的函數(shù)vander(),但是使用此函數(shù)

33、生成的Vandermonde矩陣和上述的W矩陣相差90o。也就是說(shuō),將用vander()函數(shù)生成的矩陣元素逆時(shí)針旋轉(zhuǎn)90o后就是控制領(lǐng)域常用的Vandermonde矩陣。MATLAB提供了一條函數(shù)rot90()專(zhuān)門(mén)用來(lái)對(duì)矩陣的元素進(jìn)行逆時(shí)針旋轉(zhuǎn)90o的操作,請(qǐng)看下例: C=1 2 3 4 vander(C) ans = 1 1 1 1 8 4 2 1 27 9 3 1 64 16 4 1 rot90(ans),MATLAB基礎(chǔ),33,ans = 1 1 1 1 1 2 3 4 1 4 9 16 1 8 27 64,(6) Hankel矩陣 給定一個(gè)序列cc1, c2,cn,用這些數(shù)寫(xiě)出一個(gè)矩陣

34、,第(i,j)元素為hi,jCi+j-1, 這樣就構(gòu)成一個(gè)Hankel矩陣,因此,該種矩陣是對(duì)稱(chēng)矩陣,且其反對(duì)角線上元素相同。n階Hankel矩陣表示為,MATLAB基礎(chǔ),34,在MATLAB中生成Hankel矩陣有兩種方法: Hhankel (c) 產(chǎn)生一個(gè)Hankel方陣其第一列元素為向量c,而反主對(duì)角線以下 元素均為0。 Hhankel (c, r) 產(chǎn)生一個(gè)Hankel矩陣,其第一列元素為向量c,最后一行元素是 r,如果c最后一個(gè)元素與r第一個(gè)元素不等,取c最后一個(gè)元素。,(7) 線性間隔向量 產(chǎn)生線性增量的向量;其功能與“:”操作相似。 v=1inspace(a, b) 產(chǎn)生一個(gè)在a

35、,b間線性間隔的100點(diǎn)行向量v。 v=1inspace(a, b, n) 產(chǎn)生一個(gè)在a,b間線性間隔的n點(diǎn)行向量v,(8) 對(duì)數(shù)間隔向量 產(chǎn)生對(duì)數(shù)增量向量, 對(duì)于產(chǎn)生頻率向量特別有用。,vlogspace (a, b) 產(chǎn)生一個(gè)在10a10b間的50個(gè)對(duì)數(shù)間隔點(diǎn)的行向量v;vlogspace (a, b, n) 產(chǎn)生一個(gè)在10a10b間的n個(gè)對(duì)數(shù)間隔點(diǎn)的行向量v;v1ogspace(a,pi) 產(chǎn)生一個(gè)在10api間的50個(gè)對(duì)數(shù)間隔點(diǎn)的行向量v。,MATLAB基礎(chǔ),35,1. 2. 6 MATLAB的數(shù)據(jù)類(lèi)型,現(xiàn)有四種基本數(shù)據(jù)類(lèi)型:雙精度數(shù)組、字符串?dāng)?shù)組、元胞數(shù)組、構(gòu)架數(shù)組。,(1) 構(gòu)架數(shù)

36、組(Structure Array)能存放各類(lèi)數(shù)據(jù)。,類(lèi)似于C語(yǔ)言中的結(jié)構(gòu),即通常所說(shuō)的 Structure。該數(shù)組的基本組分是域。構(gòu)架數(shù)組的創(chuàng)建和使用以例子來(lái)說(shuō)明:,例:ex1_struc。本例通過(guò)溫室數(shù)據(jù)(包括溫室名、容積、溫度、濕度等)演示單構(gòu)架green_house的創(chuàng)建和使用。它有三個(gè)域:name,volume,parameter。而 parameter又有兩個(gè)子域:temperature,humidity。 % 構(gòu)架的域由(構(gòu)架名).(域名)標(biāo)識(shí)。 green_=一號(hào)房; green_house.volume=2000立方米; % 域還可包含子域,MATLAB基

37、礎(chǔ),36,green_house.parameter.temperature=31.2,30.4,31.6,28.7,29.7,31.1,30.9,29.6; green_house.parameter.humidity=62.1,59.5,57.7,61.5, 62.0,61.9, 59.2,57.5; 上述4條語(yǔ)句則構(gòu)建了構(gòu)架數(shù)組green_house。在command win dows 下鍵入相應(yīng)命令可得: green_ ans = 一號(hào)房 green_house.parameter.temperature ans = 31.2000 30.4000 31.6000

38、28.7000 29.7000 31.1000 30.9000 29.6000,該數(shù)組的基本組分是域。,構(gòu)架必須在劃分“域”后才能使用。,數(shù)據(jù)不能存放于構(gòu)架,只能存放在域中。,MATLAB基礎(chǔ),37,例:ex1_cell。本例演示:元胞數(shù)組的創(chuàng)建。 C_str=char(武漢大學(xué),動(dòng)力系); % 產(chǎn)生字符串 R=1 2 3;4 5 6;7 8 9; % 產(chǎn)生(3X3)實(shí)數(shù)陣R Cn=1+2i; % 產(chǎn)生復(fù)數(shù)標(biāo)量 S_sym=sym(sin(-3*t)*exp(-t); % 產(chǎn)生一個(gè)符號(hào)函數(shù) % (1)直接創(chuàng)建法之一:“外標(biāo)識(shí)元胞元素賦值法” A(1,1)=C_str; A(1,2)=R; A(

39、2,1)=Cn; A(2,2)=S_sym;,(2) 元胞數(shù)組(Cell Array) 元胞數(shù)組是一種比較特殊的數(shù)組形式,使用方便,其形式就如同銀行里的保險(xiǎn)箱庫(kù)一樣。在Matlab中,當(dāng)描述一個(gè)較大的數(shù)據(jù)集合,如一個(gè)神經(jīng)網(wǎng)絡(luò)就通常使用元胞數(shù)組。,構(gòu)架的域可以存放任何類(lèi)型、任何大小的數(shù)組。,不同構(gòu)架的同名域中存放的內(nèi)容可不同。,MATLAB基礎(chǔ),38,% (2)直接創(chuàng)建法之二:“編址元胞元素內(nèi)涵的直接賦值法” B1,1=C_str; B1,2=R; B2,1=Cn; B2,2=S_sym;,上述語(yǔ)句運(yùn)行后,則生成了元胞數(shù)組A, B。元胞數(shù)組的顯示和引用可參見(jiàn)下面的實(shí)例。在 command win

40、dows 下鍵入相應(yīng)命令可得: (a) 顯示元胞數(shù)組結(jié)構(gòu) A A = 2x4 char 3x3 double 1.0000+ 2.0000i 1x1 sym (b) 顯示元胞數(shù)組內(nèi)容,MATLAB基礎(chǔ),39,celldisp(A) A1,1 = 武漢大學(xué) 動(dòng)力系 A2,1 = 1.0000 + 2.0000i A1,2 = 1 2 3 4 5 6 7 8 9 A2,2 = sin(-3*t)*exp(-t),MATLAB基礎(chǔ),40,(c) 引用元胞數(shù)組元素內(nèi)容 x=B1,2 x = 1 2 3 4 5 6 7 8 9 y=B1,2(1,2) y = 2,該數(shù)組的基本組分是元胞(Cell),以中

41、的下標(biāo)來(lái)區(qū)分。,元胞可以存放任何類(lèi)型、任何大小的數(shù)組。,同一個(gè)元胞數(shù)組中各元胞的內(nèi)容可以不同。,MATLAB基礎(chǔ),41,1. 2. 7 MATLAB的基本矩陣運(yùn)算,(1) 矩陣的行列式運(yùn)算 det(A)。 (2) 矩陣跡的運(yùn)算 trace(A)。矩陣的跡定義為其對(duì)角線上各元素之和,矩陣的跡與矩陣的特征值之和是相等的。 (3) 矩陣求秩 rank(A)。矩陣A=aij, i=1,2,m, j=1,2,n。如果該矩陣中共有rc個(gè)列向量線性無(wú)關(guān),則稱(chēng)矩陣的列秩為rc,rcm,則為列滿秩矩陣;如果該矩陣中共有rr個(gè)行向量線性無(wú)關(guān),則稱(chēng)矩陣的行秩為rr,rr=n則為行滿秩矩陣,可以證明,矩陣的行秩與列秩

42、是相等的,即,rank(A)=rc=rr 。 (4) 矩陣的特征值與特征向量 定義:對(duì)于一個(gè)矩陣A=aijnxn;如果存在非零向量 x= x1, x2, , xn, 且有一個(gè)標(biāo)量入 滿足:Ax入x;則入為A的一個(gè)特 征值,而x為對(duì)應(yīng)于特征值 入 的特征向量。,MATLAB基礎(chǔ),42,運(yùn)算: V, Deig (A)。D為對(duì)角陣,其對(duì)角線上為A的特征值,每個(gè)特征值對(duì)應(yīng)矩陣V的列為特征值的特征向量,該矩陣為一滿秩矩陣,AVVD;且每個(gè)特征向量各元素之平方和均為l。 (5) 矩陣求逆及廣義矩陣逆 矩陣求逆通常與線性方程的求解有關(guān),對(duì)于線性方程AxB;式中A和B為相容維數(shù)的矩陣,而x也為矩陣,是方程的解

43、。如果A為非奇異方陣,則可得出:x=A-1B,稱(chēng)A-1為A的逆矩陣。一般地,對(duì)一個(gè)已知的nxn階非奇異方陣A來(lái)說(shuō),如果有一個(gè)同樣大小的矩陣C滿足ACCAI則稱(chēng)C為A的逆矩陣,并記逆矩陣為:CA-1。MATLAB中求逆函數(shù)為 Cinv(A) 它返回方陣A的逆,如果A為奇異或接近奇異矩陣,則產(chǎn)生出錯(cuò)信息。 如果需要求奇異矩陣的一種“逆”陣,這種“逆”就稱(chēng)為矩陣的廣義逆,又叫偽逆,其定義如下:如果存在一個(gè)矩陣N,滿足,MATLAB基礎(chǔ),43,ANAA,則N稱(chēng)為A的廣義逆矩陣,記作NA。在MATLAB中求矩陣廣義逆的函數(shù)為: Npinv(A) 它返回矩陣A的廣義逆。 (6) 矩陣的特征多項(xiàng)式、特征方程

44、與特征根 若A為一方陣,I為與A同階的單位矩陣,則可構(gòu)成矩陣:CxI-A,求該矩陣的行列式,得一多項(xiàng)式:C(x),C(x)det(xI-A)=c0 xn+c1xn-1+cn-1x+cn,該多項(xiàng)式C(x)稱(chēng)為矩陣A的特征多項(xiàng)式,其中系數(shù)ci, i0,1,2,n稱(chēng)為矩陣A的特征多項(xiàng)式系數(shù)。MATLAB中提供了求矩陣特征多項(xiàng)式系數(shù)的函數(shù),其調(diào)用格式為: cpoly(A) A為n階方陣,返回一個(gè)由n+1個(gè)元素組成的行向量c,其各個(gè)分量為矩陣A的降冪排列的特征多項(xiàng)式系數(shù)。 令特征多項(xiàng)式等于0所構(gòu)成的方程式為該矩陣的特征方程,而特征方程的根為該矩陣的特征根。MATLAB中求矩陣特征根的函數(shù)調(diào)用方法為:,M

45、ATLAB基礎(chǔ),44,rroots(c) c為特征多項(xiàng)式的系數(shù)向量,而所求得的列向量r為特征方程的解,即原矩陣的特征根。 在已知矩陣的特征根向量r后,也可求得原矩陣的特征多項(xiàng)式系數(shù): cpoly(r) r為矩陣的特征根向量,返回一個(gè)行向量c,其各個(gè)分量為原矩陣A的降冪排列的特征多項(xiàng)式系數(shù)。,(7) 矩陣的三角分解 矩陣的三角分解就是將一個(gè)滿秩方陣分解為一個(gè)下三角矩陣和一個(gè)上三角矩陣的乘積,又稱(chēng)為矩陣的LU分解。高級(jí)語(yǔ)言中一些求解線性方程組的算法就是基于矩陣的LU分解,因?yàn)?,相?duì)來(lái)說(shuō)上三角和下三角矩陣的逆矩陣是比較容易求解的,并且如果注意到主對(duì)角元選取的問(wèn)題,就可以保證計(jì)算的數(shù)值穩(wěn)定性。在系統(tǒng)辨

46、識(shí)的階次推導(dǎo)和Hankel矩陣的理論推導(dǎo)過(guò)程中也會(huì)用到LU分解。,MATLAB基礎(chǔ),45,基本矩陣函數(shù): cond(A), dot(A,B),norm(A,1), norm(A,2), norm(A,inf), norm(A,fro), rcond(A), svd(A), 。,MATLAB中提供的將滿秩方陣分解為一個(gè)下三角矩陣和一個(gè)上三角矩陣乘積的方法如下: L U=lu(A) 除上面介紹的常用方法之外, MATLAB還提供了很多基本矩陣函數(shù)和矩陣分解函數(shù),如:,矩陣分解函數(shù): cdf2rdf(V ,D), chol(A), Hess(A) , null(A), LU(A), orth(A),

47、 qr(A), qz(A), rref(A), rst2csf(V ,D), schur(A), subspace(A ,B), svd(A) 。 這些函數(shù)的用法可通過(guò) help 命令查詢(xún),此處不再過(guò)多描述。,MATLAB基礎(chǔ),46,1. 2. 8 MATLAB的矩陣非線性運(yùn)算,前邊介紹的主要是加、減、乘、除等矩陣的基本運(yùn)算,包括求逆、對(duì)角化、旋轉(zhuǎn)等線性變換在內(nèi),這些運(yùn)算統(tǒng)稱(chēng)為矩陣的線性運(yùn)算。而矩陣的非線性運(yùn)算,一般我們?cè)趯W(xué)習(xí)線性代數(shù)的過(guò)程中恐怕接觸得比較少。這些非線性運(yùn)算主要是根據(jù)不同的工程需要發(fā)展起來(lái)的,一方面是實(shí)際運(yùn)算的需要,另一方面也是為了書(shū)寫(xiě)簡(jiǎn)潔。這些非線性運(yùn)算主要分為兩大類(lèi):一類(lèi)是

48、對(duì)矩陣元素的非線性運(yùn)算,基本上標(biāo)量的非線性運(yùn)算都可以在矩陣運(yùn)算中找到對(duì)應(yīng)的版本(如前所述,事實(shí)上MATLAB運(yùn)算的基本元素是矩陣,標(biāo)量的運(yùn)算也是以矩陣的方式進(jìn)行的);另一類(lèi)是對(duì)于整個(gè)矩陣的非線性運(yùn)算,包括求取矩陣的指數(shù)、對(duì)數(shù)或者是任意表達(dá)式的函數(shù)等等;事實(shí)上這些對(duì)整個(gè)矩陣的非線性運(yùn)算都是用加、減、乘、除等線性運(yùn)算來(lái)近似的,但使用MATLAB提供的矩陣非線性運(yùn)算函數(shù),可以事半功倍,省去了高級(jí)語(yǔ)言編程的工作量,迅速得到相應(yīng)的結(jié)果。,MATLAB基礎(chǔ),47,(1) 矩陣元素的非線性運(yùn)算 矩陣元素的非線性運(yùn)算是對(duì)矩陣的單個(gè)元素進(jìn)行的。當(dāng)然,我們既可以對(duì)矩陣中指定的元素進(jìn)行非線性運(yùn)算,也可以對(duì)矩陣中每個(gè)

49、元素整體進(jìn)行同樣的非線性運(yùn)算。有關(guān)標(biāo)量的非線性運(yùn)算基本都可以對(duì)矩陣進(jìn)行,只是需要特別注意該非線性函數(shù)的實(shí)現(xiàn)條件。下表列出了一些常用的矩陣非線性函數(shù),更多的信息可從幫助文件獲得。,MATLAB基礎(chǔ),48,例如: A=1 2 3 4;5 6 7 8;4 3 2 1;8 7 6 5 A = 1 2 3 4 5 6 7 8 4 3 2 1 8 7 6 5 log(A) ans = 0 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 1.3863 1.0986 0.6931 0 2.0794 1.9459 1.7918 1.6094 log(A(1,:)

50、 ans = 0 0.6931 1.0986 1.3863,MATLAB基礎(chǔ),49,(2) 整個(gè)矩陣的非線性運(yùn)算,MATLAB提供了一條函數(shù)funm()可以進(jìn)行矩陣一般函數(shù)運(yùn)算,但這條函數(shù)語(yǔ)句在實(shí)現(xiàn)過(guò)程中使用了一種潛在不穩(wěn)定的算法,尤其是對(duì)于病態(tài)矩陣,有可能得出不正確的結(jié)果。如果該函數(shù)內(nèi)嵌的檢查器檢查出不符合計(jì)算條件的矩陣,MATLAB就會(huì)自動(dòng)報(bào)警。但這個(gè)檢查器過(guò)于靈敏,虛警概率較高。因此,對(duì)于常用的矩陣指數(shù)和對(duì)數(shù)等運(yùn)算,MATLAB推薦使用其專(zhuān)有函數(shù)expm()、logm(),這些函數(shù)的實(shí)現(xiàn)算法與funm()不同。 funm()的調(diào)用格式為:F = funm (A,fun),一般要求A是方陣

51、。我們?nèi)匀皇褂蒙侠?的矩陣A,有: funm(A,cos) Warning: Result from FUNM may be inaccurate. esterr = 1. ans = 0.2541 -0.3325 0.0809 0.4943 -0.8214 0.5920 0.0054 0.4189 0.6515 0.2381 0.8247 -0.5887 0.5760 0.1626 -0.2508 0.3358,MATLAB基礎(chǔ),50,可以看到MATLAB警告說(shuō)funm()函數(shù)計(jì)算結(jié)果可能不準(zhǔn)確。為了保險(xiǎn)起見(jiàn),對(duì)于一般的非線性運(yùn)算可以用Taylor級(jí)數(shù)來(lái)近似,用MATLAB語(yǔ)言編程只需很短的

52、程序就可以實(shí)現(xiàn),精度和準(zhǔn)確性都可以人為設(shè)定。 在控制系統(tǒng)設(shè)計(jì)和仿真領(lǐng)域,使用最多的矩陣非線性運(yùn)算就是矩陣指數(shù)運(yùn)算,其定義為:對(duì)于nxn的方陣A,有:,對(duì)于控制系統(tǒng)的狀態(tài)空間描述形式Ax=Bu,因?yàn)橄率降拇嬖冢?即狀態(tài)空間系數(shù)矩陣A的指數(shù)的拉普拉斯變換等于其預(yù)解矩陣,而預(yù)解矩陣是求解狀態(tài)空間方程的關(guān)鍵,因此,指數(shù)矩陣獲得了非常廣泛的應(yīng)用。狀態(tài)方程的求解、系統(tǒng)的模態(tài)判定等等都要用到指數(shù)矩陣的概念。,MATLAB基礎(chǔ),51,MATLAB提供了四條函數(shù)可以求解矩陣指數(shù),分別是expm()、expml()、expm2()、expm3。 其中expm()和expml()都使用Pade算法來(lái)逼近矩陣指數(shù)的真

53、實(shí)值,對(duì)于沒(méi)有特殊限制的矩陣,一般推薦使用這兩個(gè)函數(shù),能夠保證算法的收斂性,其缺點(diǎn)是速度比較慢。這兩個(gè)函數(shù)的區(qū)別是:expm()嵌在系統(tǒng)內(nèi)核里,而expml ()是以M文件的格式存為外部函數(shù)。expm2()使用上述矩陣指數(shù)的定義式來(lái)計(jì)算,即Taylor展開(kāi)法。這種方法的優(yōu)點(diǎn) 是結(jié)構(gòu)和思路都比較簡(jiǎn)單,適于用戶(hù)自己修改和控制,滿足其特殊要求。其缺點(diǎn)是速度比較慢且不能保證算法一定收斂(絕大部分情況是可以保證得到正確結(jié)果的)。expm3()對(duì)特征向量滿秩的矩陣進(jìn)行了優(yōu)化,通過(guò)A矩陣的特征向量和特征值來(lái)計(jì)算其指數(shù)矩陣。,例:考慮如下矩陣A,試比較分別用expm()、expm2()和expm3()求解其矩

54、陣指數(shù)的結(jié)果。,MATLAB基礎(chǔ),52,A=2 3 4 5;0 2 3 4;0 0 4 5;0 0 0 4 A = 2 3 4 5 0 2 3 4 0 0 4 5 0 0 0 4,expm(A) ans = 7.3891 22.1672 167.3879 691.5055 0 7.3891 70.8136 326.8702 0 0 54.5982 272.9908 0 0 0 54.5982,MATLAB基礎(chǔ),53,expm2(A) ans = 7.3891 22.1672 167.3879 691.5055 0 7.3891 70.8136 326.8702 0 0 54.5982 272.

55、9908 0 0 0 54.5982,expm3(A) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 3.847805e-017.,ans = 7.3891 0 200.6386 184.6619 0 7.3891 70.8136 0 0 0 54.5982 0 0 0 0 54.5982,MATLAB基礎(chǔ),54,從以上的代碼和運(yùn)行結(jié)果中可以看出,expm3()函數(shù)在求解有重特征值矩陣(上例特征值為2,2,4,4)的指數(shù)時(shí)有可能得到不正確的結(jié)果,而使用expm()

56、和expm2()時(shí)一般會(huì)得到正確的結(jié)果。因此,如果不是對(duì)計(jì)算時(shí)間要求過(guò)高的話,一般使用expm()或原始的定義式expm2 ()。,(3) 特殊函數(shù),besselj (NU,Z) 、bessely (NU,Z) : 貝塞爾函數(shù); beta (Z,W): beta函數(shù); erf(X)、 erfinv(Y): 高斯分布函數(shù)的積分; gamma(X): gamma函數(shù); rat (X,tol): 有理逼近函數(shù); ellipke (M,tol)、 ellipj (U,M) :橢圓積分函數(shù) 這些函數(shù)不一定我們每個(gè)人都能在工作中全都遇到。但一旦需要,均可通過(guò)help來(lái)獲得其用法,并且可以為我們帶來(lái)很大的方

57、便。,MATLAB基礎(chǔ),55,1. 2. 9 MATLAB的數(shù)據(jù)統(tǒng)計(jì)分析,MATLAB提供了一系列的函數(shù),用于對(duì)數(shù)據(jù)集合進(jìn)行統(tǒng)計(jì)分析。例如:求最大值、最小值、平均值、標(biāo)準(zhǔn)偏差 、相關(guān)系數(shù)等。對(duì)于一組給定的數(shù)據(jù),xi, i=1,2,N, 在MATLAB中用一向量表示為:x=x1,x2,xN。常用的MATLAB數(shù)據(jù)分析函數(shù)有: 求最大值,max(x); 求最小值,min(x); 求平均值,mean(x); 求標(biāo)準(zhǔn)差,std(x); 求協(xié)方差,cov(); 求相關(guān)系數(shù),corrcoef(); 求元素之差或近似導(dǎo)數(shù),diff(); 求梯度值,gradient(); 排序,sort(x); 元素乘積,p

58、rod(x);,MATLAB基礎(chǔ),56,1. 2. 10 MATLAB的數(shù)值分析,MATLAB提供了一系列的函數(shù),求函數(shù)極值、函數(shù)零點(diǎn)和極點(diǎn)、數(shù)值積分、數(shù)值微分、微分方程的數(shù)值解等。,(1) 極值分析 在實(shí)際分析和應(yīng)用中,我們常對(duì)一些函數(shù)的極值感興趣,MATLAB中提供了求函數(shù)極小值的函數(shù):fmin(),fmins(),用于單純形法求解最優(yōu)化問(wèn)題,可求解極大值或極小值,在求函數(shù)極大值時(shí),定義一個(gè)函數(shù)為原函數(shù)的負(fù)函數(shù),而用fmin()或fmins()求新定義函數(shù)的極小值,即可求出原函數(shù)的極大值。 函數(shù): xfmin (fun, xl, x2) 返回函數(shù)fun(x)在區(qū)間xl, x2內(nèi)的局部極小值。 函數(shù): xfmin (fun, xl, x2, options) 使用options對(duì)參數(shù)進(jìn)行控制,同樣返回函數(shù)fun (x)在區(qū)間xl,x2內(nèi)的局部極小值。,MATLAB基礎(chǔ),57,(2) 零點(diǎn)分析,zfzero (fun, x) 找到函數(shù)fun在x附近的零點(diǎn)。fun為一個(gè)函數(shù)名的字符串,函數(shù)為單變量實(shí)值函數(shù)。返回值的附近函數(shù)變號(hào)。如果x為兩元素向量,則認(rèn)為x為區(qū)間。如果找到Inf,NaN,或復(fù)數(shù)值,則停止在查找區(qū)間內(nèi)的搜索。 例: z=fzero(cos,2) z = 1.57

溫馨提示

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

評(píng)論

0/150

提交評(píng)論