控制系統的MATLAB仿真與設計(第2版)全套課件完整版電子教案最新板_第1頁
控制系統的MATLAB仿真與設計(第2版)全套課件完整版電子教案最新板_第2頁
控制系統的MATLAB仿真與設計(第2版)全套課件完整版電子教案最新板_第3頁
控制系統的MATLAB仿真與設計(第2版)全套課件完整版電子教案最新板_第4頁
控制系統的MATLAB仿真與設計(第2版)全套課件完整版電子教案最新板_第5頁
已閱讀5頁,還剩589頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、控制系統的MATLAB仿真與設計(第2版)第一章 MATLAB基礎主要內容11MATLAB簡介12MATLAB的安裝和使用13MATLAB的工作空間14MATLAB的幫助系統15MATLAB平臺的系統設置16MATLAB編程基礎1.1 MATLAB 簡介一、MATLAB 的發展歷程1980年前后,美國的Cleve Moler教授構思并開發了MATLAB。MATLAB是Matrix和Laboratory兩詞的前三個字母組合;早期的MATLAB是用Fortran語言編寫的,集命令翻譯、科學計算于一身的交互式軟件系統。它只能作矩陣運算,繪圖也只能用及其原始的方法,內部函數也只提供了幾十個。交互式語言

2、,是指人們給出一條命令,立即就可以得出該命令的結果。該語言無需像C和Fortran語言那樣,首先要求使用者去編寫源程序,然后對之進行編譯、連接,最終形成可執行文件。1.1 MATLAB 簡介1984年,Cleve Moler和John Little等人成立了MathWorks的公司,正式將MATLAB推向市場。這時,MATLAB的內核采用C語言編寫,除了原有的數值計算能力外,還增加了豐富多彩的圖形圖像處理、多媒體功能、符號運算和它與其他流行軟件的接口功能,使得 MATLAB 的功能越來越強大。1993年,MathWorks公司于推出了具有劃時代意義的基于Windows平臺的MATLAB 4.0

3、 版本;1994年推出的4.2版本,擴充了4.0版本的功能,尤其在圖形界面設計方面更提供了新的方法;1.1 MATLAB 簡介1997年推出了MATLAB 5.0版,定義了更多的數據結構,如單元數據、數據結構體、多維矩陣、對象與類等,使其更方便編程;1999年初推出的MATLAB 5.3版;2000 年10月底推出了其全新的MATLAB 6.0正式版,在核心數值算法、界面設計、外部接口、應用桌面等諸多方面有了極大的改進;2007年秋天發布了MATLAB 7.4版本,該版本對以前版本的很多模塊做了升級改進,使網絡程序員可以通過C#,VB.net等語言使用MATLAB。1.1 MATLAB 簡介二

4、、MATLAB 平臺的組成Matlab語言 Matlab是一種高級編程語言,它提供了多種數據類型、豐富的運算符 和程序控制語句供用戶適用。用戶可以根據需求,按照Matlab語言的約定,編程完成特定的工作。Matlab集成工作環境 Matlab集成工作環境包括程序編輯器、變量查看器、系統仿真器和幫助系統等。用戶在集成工作環境中可以完成程序的編輯、運行和調試,輸出和打印程序的運行結果。1.1 MATLAB 簡介MATLAB圖形系統 用MATLAB的句柄圖形,可以實現二維、三維數據的可視化、圖像處理,也可以完全或局部修改圖形窗口,還可以方便的設計圖形界面。Matlab數學函數庫 Matlab提供了豐

5、富的數值計算函數庫,既包括常用的數學函數,又包含了各個專業領域獨有的數值計算實現,用戶可以通過簡單的函數調用就完成復雜的數學計算任務。Matlab編譯器 通過編譯器,可以將用Matlab語言編寫的程序編譯成脫離Matlab環境的C源代碼、動態連接庫或者可以獨立運行的可執行文件。1.1 MATLAB 簡介 Notetbook工具 Notebook能夠使用戶在Word環境中使用MATLAB的各種資源,為用戶營造容文字處理、科學計算、工程設計于一體的完美的工作環境。用Notebook制作的M-Book文檔不僅擁有Word的全部字處理功能,而且具備MATLAB的數學運算能力和計算結果可視化的能力。SI

6、MULINK交互式仿真環境 通過交互式的仿真環境SIMULINK,用戶可以采用圖形化的數學模型,完成對各類系統的模型建立和系統仿真,仿真結果也能夠以直觀的圖形方式顯示。SIMULINK可以接受用戶的鍵盤鼠標輸入,也可以通過程序語句來實現數據交換,應用方便靈活。1.1 MATLAB 簡介應用程序接口API 這是Matlab的應用程序接口,它提供了Matlab和C語言、Fortran語言之間的接口程序庫,使用戶可以在C、Fortran程序里調用Matlab程序。(系統辨識工具箱)、Robust Control(魯棒控制工具箱)、Optimization(最優化工具箱)等。 Matlab包含了各種可

7、選工具箱。工具箱是由各個領域的高水平專家編寫的,所以用戶不必編寫該領域的基礎程序就可以直接進行更高層次的研究。例如:控制領域可以使用的工具箱就有Control System (控制工具箱)、System IdentificationMATLAB 工具箱1.1 MATLAB 簡介1語言簡潔緊湊,語法限制不嚴格,程序設計自由度大,使用方便靈活。 Matlab語言不用先定義或聲明變量就可以使用它們;Matlab程序的書寫格式自由;數據的輸入、輸出語句簡潔,很短的代碼就可以完成其它語言要經過大量代碼才能完成的復雜工作。 例如:A=1 2 3;4 5 6;7 8 9一條語句實現了對3x3矩陣的輸入。三、

8、MATLAB語言的特點 2數值算法穩定可靠,庫函數十分豐富。 Matlab具有強大的數值計算能力,它提供的眾多數學計算的函數調用方便,穩定可靠。 例如:e=eig(A)%求矩陣A的特征值 L,U=lu(A) %求矩陣A的LU分解, polyder(b)%求多項式b的微分1.1 MATLAB 簡介3運算符豐富。 Matlab是用C語言編寫的,所以Matlab提供了和C語言幾乎一樣多的豐富的運算符,而且還重載了一些運算符,給它們賦予了新的含義。 例如:C=A*B%矩陣的乘法 B=C%求矩陣C的共軛復轉置 x=Ab%求Axb的最小二乘解4Matlab既具有結構化的控制語句(if、for、while)

9、,又支持面向對象的程序設計。5程序的可移植性好。 Matlab程序幾乎不用修改就可以移植到其它的機型和操作系統中運行。1.1 MATLAB 簡介6MATLAB的圖形功能強大,支持數據的可視化操作,方便的顯示程序的運行結果。7源程序的開發性,系統的可擴充能力強。 除了內部函數外,所有的MATLAB核心文件和工具箱文件都提供了MATLAB源文件,用戶可通過對源文件的修改生成自己所需要的工具箱。 MATLAB程序不用編譯生成可執行文件就可以運行,程序執行速度較慢,而且無法脫離MATLAB環境運行,這是MATLAB的缺點。MATLAB的編程效率遠遠高于一般的高級語言,這使我們可以把大量的時間花費在對控

10、制系統的算法研究上,而不是浪費在大量的基礎代碼上,這是MATLAB能夠被廣泛應用于科學計算和系統仿真的主要原因。8MATLAB是解釋執行語言。1.2 MATLAB的安裝和使用一、MATLAB 的安裝(1)將安裝盤放入光驅中,找到setup.exe文件,雙擊它開始安裝(或機器自動執行安裝文件)。(2)安裝過程中,用戶按照向導的提示進行操作即可,其中比較重要的輸入和選項包括:授權序列號 需要輸入軟件供應商提供的授權序列號才能繼續完成安裝工作。安裝路徑 根據磁盤的規劃情況,輸入MATLAB要安裝到的磁盤和路徑,建議安裝在非系統盤。1.2 MATLAB的安裝和使用工具箱選擇 MATLAB包含大量的工具

11、箱,磁盤空間足夠時,建議完全安裝;若磁盤空間有限,可只選擇安裝通用工具箱和與自己專業相關的工具箱。 常用的通用工具包有: MATLAB 核心組件,必須選擇 SIMULINK 交互式仿真工具,采用方框圖方式建模和仿真 Symbolic Math 符號計算工具 Optimization 優化程序Matlab Compiler Matlab的m文件編譯成dll或者exe文件 Matlab C/C+ Math Library 供C/C+調用的Matlab數學函數庫 Matlab C/C+ Grahpic Library 供C/C+調用的Matlab圖形函數庫1.2 MATLAB的安裝和使用 (3)安裝

12、完畢。桌面上將形成如圖所示的圖標。圖1.1 MATLAB應用程序圖標 二、MATLAB操作桌面(Matlab Desktop) 雙擊MATLAB應用程序圖標就可以啟動MATLAB操作桌面,MATLAB操作桌面是管理MATLAB其他窗口的主窗口。根據用戶對MATLAB的設置不同,MATLAB的有些窗口可見,有些則不可見。MATLAB中常用到的一些窗口包括:命令窗口、歷史命令窗口、當前目錄瀏覽器窗口、工作空間瀏覽器窗口、編輯器窗口、幫助瀏覽器窗口。MATLAB操作桌面默認的外觀如圖所示:1.2 MATLAB的安裝和使用歷史命令窗口 工作空間瀏覽器 當前目錄瀏覽器 命令窗口點擊使命令窗口成為一個單獨

13、的窗口提示符1.2 MATLAB的安裝和使用命令窗口(Command Window) 命令窗口是用戶和MATLAB系統交互的主要窗口。在該窗口中,可以執行Matlab語句、函數、命令和程序,也可以執行外部應用程序(外殼程序),同時還能顯示程序的運行結果。在提示符后可以輸入要執行的命令,用【回車】按鍵確認后,輸入的命令就會被執行。 MATLAB的特殊的功能鍵調出上一個(歷史)命令行調出下一個命令行Esc恢復命令輸入的空白狀態當輸入命令的語句過長,需要兩行或多行才能輸入,則要使用“”作連接符號,按回車鍵(Enter)轉入下一行繼續輸入。例 MATLAB的安裝和使用歷史命令窗口記錄了

14、用戶在Matlab命令窗口中所有輸入過的指令行,包括以前啟動Matlab時所輸入的指令。 歷史命令窗口(Command History Window)將指令保存為M文件。通過鼠標右鍵菜單的【Create M-File】選項來實現。 歷史命令窗口中,用戶可以進行如下操作:單行或者多行指令的復制。用鼠標點亮需要復制的指令,在鼠標右鍵菜單中選擇【Copy】選項。單行指令的在運行。用鼠標左鍵雙擊要運行的指令。多行指令的再運行。用鼠標點亮要運行的多行指令,然后在鼠標右鍵菜單中選擇【Evaluate Selection】即可按順序運行點亮的多行指令。1.2 MATLAB的安裝和使用當前目錄瀏覽器(Curr

15、ent Directory Browser) 當前目錄瀏覽器的左上角的編輯框內的路徑表示的是當前路徑,Matlab搜索/保存/打開文件,首先要在當前目錄中查找相關文件。 當前目錄瀏覽器可以進行如下操作:修改當前路徑;打開在當前路徑中的Matlab文件;文件管理。工作空間瀏覽器(Workspace) 工作空間瀏覽器用來查看Matlab環境中的變量情況 此外,通過MATLAB操作桌面的菜單命令還可以管理編輯器窗口和幫助瀏覽器窗口1.2 MATLAB的安裝和使用 M文件編輯器/調試器(Editor/Debugger) Matlab內置了程序的編輯/調試器,在編輯/調試器里可以建立、編輯、存儲M文件,

16、可以運行、調試(斷點、單步、跟蹤、查看)程序,其使用方法和Turbo C等編程平臺的集成環境類似。可以通過【File】 菜單選項來打開。幫助導航(Help Navigator) 幫助導航是Matlab的幫助交互系統,用戶可以用幫助導航來查找到相關主題的幫助內容。可以用F1或者菜單選項來打開。1.3 MATLAB的工作空間一、工作空間 工作空間(Workspace)指運行MATLAB的程序或命令所生成的所有變量和MATLAB提供的常量構成的空間,是一個比較抽象的概念。 啟動MATLAB后,會自動建立一個工作空間,在MATLAB運行期間它一直存在,關閉MATLAB后自動消失。 剛打開的工作空間中只

17、有MATLAB提供的幾個常量,如pi、虛數單位i,j等。隨著MATLAB程序的運行,程序中的變量被加入到工作空間中。除非用特殊的命令刪除某變量,否則該變量在關閉MATLAB之前一直存在。 用戶可以使用工作空間在多個MATLAB應用程序中傳遞數據,也可以隨時查看變量名及變量的值。 1.3 MATLAB的工作空間二、內存變量的查閱和刪除 使用Matlab指令查看和刪除內存變量 who %查看工作空間中變量的名字whos%查看工作空間中變量的詳細信息clear%刪除工作空間中的所有變量clear v1 v2 vn%刪除變量v1,v2和vnlength(v)%求取變量的長度,返回最大維數size(v)

18、%變量的大小exist v%變量v是否存在exist(v)%名字為v的變量是否存在例 MATLAB的工作空間 使用工作空間瀏覽器查看和刪除內存變量 使用工作空間瀏覽器可以查看內存變量,也可以刪除、更名、編輯變量,也可以將變量可視化。用鼠標指向工作空間中的某一變量,單擊鼠標右鍵,會彈出一菜單(如圖),選擇相應的菜單項目可以對指定變量進行相應操作。1.3 MATLAB的工作空間三、數組編輯器(Array Editor) 雙擊工作空間瀏覽器的任意一變量,就會彈出數組編輯器(如圖),在數組編輯器中可以修改變量的值、改變變量的大小,可以用來輸入大型數組,還可以通過右鍵菜單對變量進行其他的

19、操作。另外,數組編輯器窗口的菜單提供了大量豐富而復雜的變量操作,包括變量的文件操作、變量的編輯和變量可視化等等。 1.3 MATLAB的工作空間四、數據文件的操作 可以把工作空間中的數據保存到磁盤文件上,也可以將磁盤文件中的數據讀入工作空間,這樣的操作稱為數據文件操作。數據文件操作可以通過兩種方式進行,既可以通過工作空間瀏覽器或者數組編輯器的【File】菜單來操作,也可以通過save和load命令來操作。save FileName把全部變量保存到FileName.mat文件中save FileName v1 v2 把變量v1,v2保存到文件中save FileName v1 v2 append

20、 把變量v1,v2添加到FileName.mat文件中1.3 MATLAB的工作空間save FileName v1 v2 ascii double 把變量v1,v2保存為ASCII格式的文件 load FileName從FileName.mat文件讀入全部變量load FileName v1 v2 從FileName.mat文件讀入變量v1,v2load FileName v1 v2 ascii 從ASCII格式的文件讀入變量v1,v2【注意】FileName可以含有路徑名,但不要帶擴展名。ascii選項表示數據處理采用ASCII格式,缺省的數據格式為二進制格式。生成的數據文件自動添加mat

21、擴展名。例 MATLAB的幫助系統Matlab有大量的函數和工具箱,而且這些函數、工具箱隨著軟件版本的升級還要不斷擴充。因此對用戶來說借助于Matlab自身的幫助系統尋求函數、工具箱的使用方法,熟悉Matlab的幫助系統是掌握Matlab的重要途徑。 一、普通文本幫助 Matlab的所有可執行命令、函數的M文件都帶有一個注釋區,這個注釋區用特定的格式描述了該函數的功能、輸入/輸出變量的意義、使用注意事項和應用舉例,可以在Matlab的命令窗口中鍵入幫助命令來顯示這個注釋區的內容。Help 函數名/文件名%顯示相關函數/文件的幫助注釋區lookfor 函數名/文件名 %顯示相關函

22、數/文件的幫助注釋區的H1行 例 MATLAB的幫助系統二、超文本幫助 Matlab有一個獨立的幫助子系統幫助瀏覽器(Help Browser),幫助子系統采用超文本的格式提供完整、詳細、豐富的幫助內容,并且界面更加友好。幫助瀏覽器不隨Matlab操作桌面一起啟動,引出幫助瀏覽器可以通過以下方法:在命令窗口鍵入helpbrowser或helpdesk命令。使用在Matlab操作桌面的【Help|Matlab Help】菜單項。在Matlab各個界面上按下【F1】快捷鍵。在命令窗口鍵入 doc 函數名獲取相關函數的超文本幫助。在幫助瀏覽器左側有一個幫助導航器(Help Navig

23、ator),供用戶查找相關的幫助內容。 1.4 MATLAB的幫助系統幫助導航器 Contents 目錄頁幫助目錄頁是一個“節點可展開的目錄”,為用戶提供了幫助系統的全方位導向圖,用戶可以通過鼠標點擊節點,根據需要分門別類的找到相關的幫助主題。 Index 索引頁Matlab幫助系統有一個由指令、函數、專用術語構成的索引列表,用戶可以在索引頁中鍵入這些索引詞,從而獲關于這些索引詞的幫助內容。Search 搜索頁搜索頁是利用關鍵詞查找全文中與其匹配章節條目的交互界面。與索引頁不同的是,搜索頁是在整個HTML文件中查找,覆蓋面更加廣泛。搜索頁支持關鍵詞之間的邏輯運算符AND、OR、NOT。需要注意

24、的是邏輯運算符必須大寫,且每個邏輯運算符前后至少有一個空格。1.4 MATLAB的幫助系統Favorites 書簽用戶可能會遇到這樣的情況,某些查找到的幫助信息以后可能會經常使用,為了便于今后快速定位這些幫助信息,可以使用書簽功能。用戶可以在任意一個超文本幫助的頁面定義書簽(需要輸入書簽的名字),也可以管理這些書簽,包括添加書簽、刪除書簽等。Demos 演示頁演示頁可以運行MathWorks公司的產品演示文檔。這些文檔通過生動的方式向用戶展現MathWork公司的產品性能或者使用方法。1.5 MATLAB平臺的系統設置一、 路徑設置(Set Path)Matlab的所有文件都被統一安排在嚴格的

25、目錄結構中,Matlab將這些目錄按照優先次序設置為“搜索路徑”上的節點。當Matlab工作時,會根據具體情況在這些搜索路徑中找到所需的函數、文件和數據。 當用戶在命令窗口輸入一個名為cmd的指令后,Matlab的“搜索次序”如下:內建函數(Matlab內部函數Built-in Function)當前目錄 搜索路徑1.5 MATLAB平臺的系統設置用戶可以根據需要,增加或者刪除Matlab系統的“搜索路徑”,具體操作有以下方法:在命令窗口中鍵入pathtool或者選擇命令窗口的【File | Set Path】菜單,彈出搜索路徑對話框,用對話框上的按鈕來管理搜索路徑。利用path命令來設置搜索

26、路徑path(path, C:my_workdir)%把C:my_workdir加入搜索路徑的尾端path( C:my_workdir, path)%把C:my_workdir加入搜索路徑的首端【注意】path命令設置的搜索路徑在Matlab關閉后丟失。 1.5 MATLAB平臺的系統設置二、 個性選項(Preferences)用戶可以根據自己的偏愛,對Matlab平臺的可修改選項(主要是用戶界面方面)進行設定,這些個性選項包括各個窗口的字體、顏色、快捷鍵和語言等等。 用戶可以通過選擇命令窗口的【File | Preferences】彈出個性設置對話框,根據需要更改里面的相關設定。個性設定包括

27、了對Matlab各個窗口的顯示風格的設定,例如可以修改命令 窗口、歷史命令窗口、編輯器/調試器、幫助窗口、 數組編輯器、當前路徑瀏覽器、圖形仿真窗口等 的顯示風格。1.5 MATLAB平臺的系統設置1.6 MATLAB編程基礎 一、變量變量(包括函數)命名規則:必須以字母開頭;可以由字母、數字和下劃線混合組成;變量長度應不大于31個;字母區分大小寫。變量的定義Matlab在使用變量前不用專門的語句定義變量的數據類型,Matlab會根據語句的執行結果自動指定變量的數據類型和變量的尺寸。1.6 MATLAB編程基礎特殊變量 為了計算和使用方便,Matlab中定義了一些具有特殊意義的變量,這些特殊變

28、量在工作空間和函數空間都可以使用。 特殊變量定義表變量名稱功能變量名稱功能ans保存最后一次的運算結果pi圓周率realmax最大的浮點數值realmin最小的浮點數值i虛數單位j虛數單位inf正無窮大NaN非數(0/0,Inf/Inf)1.6 MATLAB編程基礎二、 基本數據類型 在MATLAB中共有六種數據類型,每一種類型可以是一維、二維和多維的。最基本的數據類型是雙精度型復數(double)和字符型(char)。MATLAB以復數矩陣為基本的運算單元,既可以對它整體進行處理,也可以對它的某個或某些元素進行單獨處理,操作起來比較方便。 例如: a=2.3%定義復數標量變量a,并賦值2.3

29、 A=1+i, 2; 3 ,4%定義復數矩陣變量A并賦值 str=Test str%定義字符串變量str并賦值, 字符串內容要用單引號括起來1.6 MATLAB編程基礎三、基本語句 MATLAB最基本的語句是賦值語句,其結構為: 變量名列表 = 表達式 其中等號左邊的變量名列表為MATLAB語句的返回值,若一次返回多個結果,則變量列表用 括起來,各變量間用逗號分隔;等號右邊為表達式,可以是矩陣運算或函數調用。變量名列表不是必須的,可以只用表達式作為語句。L,U= lu(A)%對矩陣A做LU分解, 分解的結果放入矩陣L和矩陣Usize(A)%求矩陣A的大小1.6 MATLAB編程基礎四、關于程序

30、編輯語句可以由分號(;)、逗號(,)或者回車結束。如果用分號結束,則左邊的變量結果不會被顯示在命令窗口,否則將顯示左側變量的值。每行可以寫多行語句,語句之間用空格、逗號、分號進行分隔。用三個或者三個以上的黑點表示“續行”,表示下一行是上一行的繼續。 A= 1, 2,3; 4, 5, 6; %表示下一行是本行的繼續,相當于 A=1,2,3;4,5,6用%表示注釋,%開始一直到行末的內容都是注釋習題11 簡述MATLAB的發展歷程?12 MATLAB平臺由哪些部分組成?13 MATLAB語言的主要特點是什么?14 工作空間操作函數有哪些?主要功能是什么?15 如何使用MATLAB的幫助系統?16

31、如何設置路徑?第二章數據結構及其運算主要內容2.1 數據類型2.2 一維數組2.3 二維數組2.4 高維數組2.5 數組操作2.6 數組運算與矩陣運算2.7 多項式2.8 關系運算、邏輯運算和運算符2.9 字符串數組2.10 細胞數組2.11 結構體數組2.1 引 言 數據結構是程序設計的重要基礎,使用合理的數據結構去描述問題,能夠縮短程序代碼、簡化程序結構、便于程序維護。 在MATLAB里共有六種基本數據類型,每一種類型可以構成一維、二維和多維的數組。這六種是:雙精度型(double): 雙精度數值類型,是最常用的類型; 字符型(char):字符數組,每個字符占16位 ;稀疏型(sparse

32、):雙精度稀疏矩陣,只存儲矩陣中的非0元素; 細胞型(cell):細胞,可以存放任意類型數據結構體(struct):不同類型的數據集合存儲型(storage):用于圖像處理2.1 引 言數組(Array)可以是一維的行(或列),也可以是二維或多維的。用戶可以操作整個數組,也可以操作數組中的某個或者某些元素。 MATLAB會根據表達式的運算結果,自動確定變量的類型和大小。變量的數據類型可以用以下函數來查看:isa(var,type) %變量var的數據類型名稱如果 是type,則返回1,否則返回0class(var) %返回變量a的數據類型名稱whos var %查看變量var的詳細情況2.2

33、一維數組 一、一維數組的創建 1逐個元素輸入法 2冒號運算符法【說明】冒號運算符的格式是: startv : step : endvstartv是初值,即數組的第一個元素值。endv是終值,即數組的最后一個元素值。step稱為步長,即數組元素每次增加的值; 步長setp可以省略不寫,此時默認步長為1; setp可以為負值,此時要求startvendv。2.2 一維數組 【說明】linspace函數的調用格式為:x=linspace(a, b, n)數組的第一個元素值為a,最后一個元素值為b,數組中共有n個元素, 這n個元素線性均勻分布于a和b之間,即數組元素依次為3、線性分隔法4、對數分隔法

34、【說明】logspace函數的調用格式為:x=logspace(a, b, n)數組的第一個元素值為 ,最后一個元素值為 ,數組中共有n個元素,這n個元素的以10為底的對數值均勻分布與a和b之間,即數組元素依次為2.2 一維數組二、一維數組的訪問一維數組的訪問遵循以下約定:用下標方式訪問數組元素,下標要用一對圓括號()引起來;下標代表的是元素在數組中的位置序號,從1開始,最大值為數組中元素的個數;下標可以是常量,也可以是變量;可以訪問數組中的單個元素,也可以訪問數組中的某些元素,即數組的子數組。例 二維數組一、二維數組的建立1逐個輸入數組元素值如果數組內元素數量少,可以直接從鍵

35、盤逐個輸入元素的值,需要遵循的規則是:整個數組必須用中括號“ ”括起來數組的行與行之間用分號“;”分隔,或者用回車符分隔每行之間的元素必須用逗號“,”或者空格分隔分隔符必須是英文字符,即在英文狀態下輸入分號、 括號、方括號、逗號等例 二維數組2利用M文件 如果數組元素很多,或者元素值要經常改變,我們可以采用M文件來輸入和保存數組。 用M文件實現對數組x的輸入和保存,方法如下:(1)在當前目錄下,用程序編輯器建立一個名為MyData.m的文件;(2)在編輯器中輸入x內容;(3)保存MyData.m文件;(4)在命令窗口鍵入MyData,就可以在內存中建立 數組x并讀入數組元素的值

36、。 例 二維數組二、二維數組的訪問二維數組的訪問遵循以下約定:用下標方式訪問數組元素,下標要用一對圓形括號()引起來;用雙下標方式訪問數組元素,格式為(r,c),其中r為二維數組的行下標,c為二維數組的列下標,下標之間用逗號分隔;用單下標方式訪問二維數組,二維數組的單下標是按照列優先規則排序的,即二維數組被看作是從第一列開始從左到右依次將各列首位連接而成的一維數組,單下標表示元素在這個一維數組中的位置;單下標和雙下標具有對應關系,其值可以通過 ind2sub和sub2ind函數進行轉換;可以訪問二維數組的某個元素及其子數組,可 以對元素和子數組賦值。例 二維數組

37、【說明】有關空數組某一維長度為0的數組稱為空數組;空數組用 表示,表示數組中沒有元素,但可以表示計算結果為“空”;僅僅能用isempty函數正確判斷數組是否為空;可以通過給數組元素賦值空數組來縮小數組的大小;盡量不要用空數組參與邏輯運算和關系運算;例 高維數組 一、高維數組的創建可以采用下列方法創建高維數組:直接通過全下標方式進行元素賦值;用低維數組合成高維數組;用數組生成函數(ones/zeros/rand等)生成高維數組;用數組操作函數(repmat/reshape等)構造高維數組。 例 高維數組二、多維數組的訪問對于高維數組的訪問,有下列約定:可以通過全下

38、標方式訪問。對于三維數組來說,第一維下標稱為“行下標”,第二維下標稱為“列下標”,第三維下標一般稱為“頁下標。”可以通過單下標方式訪問。高維數組的單下標是按照后維優先的次序排列的,對于三維數組來說,先排列“頁”,頁內先排列“列”,列內再排列“行”,即第1行第1列第1頁的元素單下標為1,然后先變化行下標,再變化列下標,最后變化頁下標。數組的維數通過ndims函數獲取。數組的尺寸通過size函數獲取數組的所有維中的最大長度通過length函數獲取。例 數組操作一、標準數組的生成 數學中定義了很多標準數組或者矩陣,如全1數組、全零數組、對角陣等,在Matlab中有相應的函數用來生成這

39、些標準數組。1ones功能:生成全1數組,即數組中的元素都為1。格式: Y=ones(n)生成nn的全1矩陣 Y=ones(m1,m2,mk)生成m1m2mk的全1數組 Y=ones(size(A)生成和數組A同樣尺寸的全1數組2zeros功能:生成全0數組,即數組中的元素都為0。格式:同ones函數2.5 數組操作3rand功能:生成均勻分布隨機數組。格式:Y=sand(state,v)設置隨機發生器的初始狀態為v其他同ones函數4randn功能:產生正態分布隨機數組。格式:同rand函數5magic功能:產生魔方矩陣,不適用于高維數組。格式:M=magic(n)產生nn的魔方矩陣2.5

40、數組操作6eye功能:產生單位矩陣,即主對角線元素都為1而其他元素都為0的二維 數組格式:Y=eye(n)Y=eye(n,m)Y=eys(size(A)Y=eye(m,n,classname)說明:classname是字符串,表示元素的數據類型名 稱,可取double, single, int8, uint8, int16, uint16,int32, uint32, int64, uint64。 2.5 數組操作7diag功能:產生對角陣,即矩陣的某個對角線元素不全為0,其他元素為0。格式:X = diag(v,k) 生成length(v)+k階方陣,并在第k條對角線放置元素vX = dia

41、g(v) 生成length(v)階方陣,并在主對角線放置元素vv = diag(X,k)返回方陣X的第k條對角線元素構成的列向量v = diag(X)返回方陣X的主對角線元素構成的列向量說明:v為行向量,表示對角線元素;k為對角線位置,k=0 表示主對角線,k0表示在主對角線上方的第k條對角 線,k0表示在主對角線下方的第(-k)條對角線。例 數組操作二、 數組操作 對數組的操作包括數組的擴展、收縮、重排、元素交換和子數組訪問等。數組操作可以通過兩種方式實現,一種是通過Matlab提供的運算符(逗號,分號,括號等)來實現,另外一種是使用Matlab提供的數組操作函數。下面介紹常

42、用的數組操作函數。1、cat功能:把大小相同的若干數組,沿著指定維的方向,串接成新數組。格式:C = cat(dim, A, B)C = cat(dim, A1, A2, A3, A4, .)說明:A,B,A1,A2等為被串接數組,要求這些數組 同維;dim表示串接方向,1表示行,2表示列, 3表示頁,以此類推。 2.5 數組操作2、fliplr 功能:沿著垂直中線,左右(Left-Right)對稱交換數組元素(不超過2維) 格式:B = fliplr(A)3、flipud 功能:沿著水平中線,上下(Up-Down)對稱交換數組元素(不超過2維) 格式:B = flipud(A)4、rot90

43、 功能:逆時針旋轉二維數組。 格式:B = rot90(A)逆時針旋轉矩陣90度 B = rot90(A,k)逆時針旋轉矩陣90*k度2.5 數組操作5、repmat 功能:按指定維上的數目,分塊鋪放指定數組。 格式:B = repmat(A,m,n)沿著第1維鋪放m個A,第2維鋪放n個A B = repmat(A,m n) B = repmat(A,m n p.)6、reshape 功能:在總元素不變的前提下,重新安排數組各個維的長度,形成新數組。 格式:B = reshape(A,m,n) B = reshape(A,m,n,p,.) B = reshape(A,m n p .) B =

44、reshape(A,., ,.) 說明:A是待重新安排的數組;m,n,p等是新數組各個維 的長度; 表示自動計算某個維的長度而無需用戶指定。 2.5 數組操作7、tril 功能:提取矩陣的下三角元素,生成下三角陣。 格式:L = tril(X) L = tril(X,k) 說明:X為待提取的矩陣;k為三角陣的分界線位置,含義同diag8、triu 功能:提取矩陣的上三角元素,生成上三角陣。 格式:L = triu(X) L = triu(X,k) 說明:X為待提取的矩陣;k為三角陣的分界線位置, 含義同diag函數。 例2.5.2例 數組運算與矩陣運算一、數組運算Matlab定

45、義了數組運算,數組運算是指對數組中的每個元素進行相同的運算。數組運算可以通過Matlab提供的運算符和數組運算函數實現。 1.用數組運算符進行數組運算A+B 數組加法運算 A- B 數組減法運算A.*B 數組相乘,A和B相同位置元素的乘積 作為結果數組的元素A./B 數組相除,A和B相同位置元素相除作 為結果數組的元素2.6 數組運算與矩陣運算 A.B一定與A./B相同A.p數組各元素求p次冪A#BA、B數組對應元素間進行關系運算,#代表關系運算符ABA、B數組對應元素間進行邏輯運算,代表邏輯運算符A. 數組轉置,非共軛轉置sA標量s與數組A運算, s與A的每個元素進行運算,代表某個運算符2.

46、6 數組運算與矩陣運算 2.數組運算函數三角函數: sin,cos,asin,asinh,asec,sect,tan,atan等指數對數函數: exp指數函數 log自然對數函數 log10以10為底的對數函數 log2以2為底的對數函數 pow22的冪函數 sqrt平方根函數2.6 數組運算與矩陣運算復數函數abs絕對值,模angle相角(弧度為單位)imag復數的虛部real復數的實部conj復數的共軛取整函數:ceil向+方向取整fix向0方向取整floor向-方向取整round向最近的整數取整sign符號函數,操作數為正則返回1,為負則返回-1,為零則返回02.6 數組運算與矩陣運算

47、二、矩陣運算矩陣和二維數組在數據結構上是完全相同的,但是矩陣是一種數學變換或者數學算子,矩陣的運算在數學上有嚴格的運算規則定義,和數組運算是不同的。矩陣運算可以通過Matlab運算符實現,Matlab也提供矩陣函數來支持矩陣運算。下面列出常用的矩陣運算。A+B矩陣加法A-B矩陣減法A*B矩陣乘法,要滿足維數要求,一般不符合交換律A/B矩陣右除,求xB=A的最小二乘解AB矩陣左除,求Bx=A的最小二乘解Ap矩陣乘方2.6 數組運算與矩陣運算 s*A標量s與矩陣A相乘,標量s分別與A的每個元素相乘expm(A)矩陣的指數函數logm(A)矩陣的對數函數sqrtm(A)矩陣的平方根函數inv(A)矩

48、陣的逆矩陣【說明】點運算。Matlab運算符提供了點運算功能。在常用的算數運算符前面加上一個“.”則代表運算是按照數組運算規則進行運算,否則是按照矩陣運算規則進行運算的。Matlab中有些運算函數的名字是某個函數名字后加了 一個字母m,通常情況下,這兩個函數的運算功能是 相同的,只是加了m的函數按照矩陣運算規則運算, 另外一個函數按照數組運算規則運算。例 數組運算與矩陣運算三、特殊的運算結果1.正無窮大 Inf有些數值計算結果是趨向于無窮大(Infinity),Matlab中用Inf表示正無窮大。 2.非數 NaN有些計算結果會產生非數(Not a Number),Matlab

49、中用NaN來表示非數。 【說明】 Matlab給出了Inf和NaN的目的是為了避免因為運算 結果出現無窮大或者不可預知的非數情況而造成程 序執行的中斷。例 多項式一、多項式的創建直接輸入法poly(A) 若A為方陣,則創建方陣A的特征多項式poly(a) 如果向量a=bn bn-1b1 b0,則創建 (x-b0 ) ( x-b1) (x-bn-1 )(x- bn )生成 的多項式的系數向量,即創建全部根為 bn ,bn-1,b1 ,b0對應的多項式。 在MATLAB里,多項式用其系數行向量表示。多項式:表示為:2.7 多項式二、多項式的運算 數學上對多項式的運算有嚴格的定義,多

50、項式運算包括多項式相乘、多項式相除、多項式相加減、多項式求導、多項式求值、多項式的部分分式展開和多項式求根等。多項式加減:+ -說明:使用Matlab的運算符 + - 實現多項式的加減法多項式相乘: p=conv(p1,p2)說明:p為多項式p1和多項式p2的乘積多項式相除:q,r=deconv(p1,p2)說明:多項式p1除以多項式p2,商多項式為q, 余多項式為r2.7 多項式多項式求導dp=polyder(p)為多項式p的導數多項式為dpdp=polyder(p1,p2) 多項式p1和多項式p2乘積的導數多項式為dpnum,den=polyder(p1,p2)有理分式(p1/p2)的求導

51、后的有理分式為(num/den)多項式求值pA=polyval(p,A)按數組運算規則求多項式p在自變量為A時的值MA=ployvalm(p,A)按矩陣運算規則求多項式p在自變量為A時的值說明:當自變量A為矩陣時,多項式中的常數項a0被 當作a0*eye(n)處理2.7 多項式多項式求根:r=roots(p)r為多項式p的根組成的列向量部分分式分解:r,p,k=residue(num,den)有理分式(num/den)部分分式分解后,r為留數,p為極點,k為直項多項式擬合:p=polyfit(x,y,n)由給定數據x和y擬合出n階多項式p,用來逼近y=f(x)曲線矩陣的特征多項式:p=poly

52、(A) 多項式p為矩陣A的特征多項式例 關系運算、邏輯運算和運算符 一、 邏輯值在程序流程的控制和解決問題的分析判斷中,需要對某些命題的真假給出答案,因此Matlab定義了邏輯值,包括“邏輯真”和“邏輯假”。對于邏輯值,Matlab有如下約定:在關系表達式和邏輯表達式中的輸入中,任何非0數為“邏輯真”,只有0為“邏輯假”。關系表達式和邏輯表達式的計算結果是一個由0和1構成的“邏輯數組”(Logical Array),邏輯數組中“1”表示真,“0”表示假。邏輯數組屬于“數值數組”的子類,它可以作為數值數組參與數值計算,也可以用于數組尋訪等特殊場合。比如:用邏輯矩陣作為數組下標,可

53、以提取數組中邏輯矩陣真值位置處的元素。關系運算符和邏輯運算符遵循數組運算規則。2.8 關系運算、邏輯運算和運算符二、 關系運算符Matlab提供的關系運算符如下: 小于大于=大于等于= =等于!=不等于三、 邏輯運算符Matlab提供了3種邏輯操作,他們分別是數組邏輯操作、位邏輯操作和先決邏輯操作。2.8 關系運算、邏輯運算和運算符數組邏輯操作& 邏輯與| 邏輯或 邏輯非xor邏輯異或位邏輯操作函數(操作數必須是非負整形標量或者數組)bitand 位與 bitor 位或bitcmp 位非bitnor 位異或先決邏輯運算符(要求操作數為標量)&先決與,如果第一個操作數為假,則不判斷其他操作數,

54、直接給出結論“假”|先決或,如果第一個操作數為真, 則不判斷其他操作數,直接給出結論“真”例 關系運算、邏輯運算和運算符四、邏輯函數邏輯函數的運行結果是邏輯矩陣,從函數名上就可以看出其的功能。any(v);%向量v中有非0元素,結果為1,否則為0;對矩陣的運算結果 是行向量all(v);%向量v中都是非0元素,結果為1。對矩陣的運算結果是行向量isequal(A,B);%判斷是否相等,數組運算ismember(A,B);%A的元素是B中元素,則A相應位置為1,否則為0 判斷特殊數據的邏輯函數isempty isfinite isinf isletter isnan isprim

55、e isreal isspace判斷數據類型的邏輯函數iscell ischar iscellstr isfield isglobal ishandle islogical isnumeric isobject issparse isstruct例2.8.2例 關系運算、邏輯運算和運算符五、運算符及其優先級MATLAB的運算符可分為三類:算術運算符、關系運算符和邏輯運算符。除去個別運算符外,一般可認為算術運算符的優先級最高,其次是關系運算符,再其次是邏輯運算符。下表是Matlab運算符優先級的約定。 【說明】如果書寫表達式的時候,無法弄清某些運算符的優先級,建議使用括號來規定運

56、算次序。2.8 關系運算、邏輯運算和運算符優先級別運算符1括號 ()成員符 .2轉置 .共軛轉置 數組冪 .矩陣冪 3代數正 +代數負 -邏輯非 4數組乘 .*數組除 .數組除 ./矩陣乘 *矩陣左除 矩陣右除 /5加 +減 -6冒號 :7小于 等于 =不小于 =不大于 =不等于 =8邏輯與 &9邏輯非 |10先決與 &11先決非 |12賦值 =2.9 字符串數組 一、 字符與字符串MATLAB有強大的字符處理能力,字符串處理主要用于數據的可視化顯示、宏操作、符號計算和文件操作等。Matlab中,對于字符和字符串有如下描述:字符是字符串中的一個元素,一個英文字符或者一個漢字都占用一個字符位。字

57、符在內存中是用其ASCII碼存儲的,通常一個字符的ASCII碼為2個Byte。字符或者字符串必須放在“單引號”對中。如果字符串中出現“單引號”字符,則用2個“單引號”表示。字符串可以看作是一維字符數組。一維字符串數組可以看作是二維字符數組。 例 字符串數組二、字符串數組的訪問一維字符串數組相當于二維字符數組,因此其訪問方式和二維數組的訪問方式相同,可以采用單下標和雙下標方式訪問。今后如無特別說明,本書中的“字符串數組”就指的是一維字符串數組。三、 字符串轉換函數Matlab提供了大量的字符串轉換函數,實現各種數據類型和字符串之間的相互轉換。abs把字符串轉換為ASCII碼fpr

58、intf sprintf sscanf 字符串的格式化輸入輸出函數例 字符串數組base2dec bin2dec dec2base dec2hex hex2dec hex2num int2str mat2str num2str str2num str2mat char double 強制轉換函數【說明】dec表示十進制整數;num表示浮點數;int表示整數; mat表示數值矩陣;base表示任意進制串;bin表示2進制串;hex表示16進制串; str表示字符串;2表示To(轉換到),如bin2dec的意思是 “把二進制串轉換到十進制整數”。 2.9 字符串數組四、 字符串操作

59、函數用戶可以使用Matlab提供的字符串操作函數對字符串進行各種操作,這些操作包括:創建blanks char mat2str deblank連接strcat strvcat 搜索與替換findstr strmatch strrep strtok執行宏字符串eval feval2.9 字符串數組邏輯判斷ischar isletter isspace 大小寫轉換lower upper字符串比較strcmp strncmp對齊方式strjust2.10 細胞數組一、細胞數組的數據結構程序設計中為了便于處理數據和簡化程序代碼,希望將不同類型的數據放置在某種數據結構中,并且通過每個數據在這種數據結構中

60、的位置索引來訪問該數據。數值數組(Numberic Array)中只能放置相同類型的數據,不能解決這樣的問題。Matlab定義了細胞數組(Cell Array),其與數值數組的比較如下:相同點數值數組和細胞數組都是數組,都可以用下標(單下標、全下標)方式訪問不同點數值數組的元素是相同類型的數據,細胞數組的元素可以是不同類型的數據 2.10 細胞數組二、 細胞數組的訪問細胞數組也是數組,可以用訪問數組的方法來訪問細胞數組,即通過單下標或全下標的方式訪問細胞數組中的某個元素或子數組。細胞是細胞數組中的元素,可以把細胞當作是一種新的數據類型。細胞的訪問是通過圓括號()和下標實現的,就和訪問數組元素一

溫馨提示

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

評論

0/150

提交評論