




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.1數學軟件與實驗數學軟件與實驗-matlab.2推薦參考書推薦參考書.3推薦參考書推薦參考書.4 一個可視化的計算程序, 廣泛使用于從個人計算機到超級計算機范圍內的各種計算機上 包括命令控制、可編程,上百個預先定義命令和函數 有許多強有力的命令, 能完成大量的高級矩陣處理 強有力的二維、三維圖形工具 能與其他程序一起使用 25個(不斷增加中)不同的工具箱應用于特殊的應用領域 工業研究與開發的有力工具 數學教學, 尤其線代, 數值分析, 科學計算方面的教研工具 電子學, 控制理論, 物理學等工程科學方面的教研工具 經濟學, 化學和生物學等有計算問題的所有領域中的教學與研究 名字取自矩陣實驗室(
2、matrix laboratory).5 不是萬能的解決工具 不是最高性能的編程語言 受計算條件限制, 不能解決超大型實際問題 不能解決工具箱之外的問題種類 - 需要編寫接口、算法甚至工具箱.6.7.8.9 數值分析 數值和符號計算 工程與科學繪圖 控制系統的設計與方針 數字圖像處理 數字信號處理 通訊系統設計與仿真 財務與金融工程.10.11.12.13.14.15.16MATLAB 結合第三方軟硬件產品組成了在不結合第三方軟硬件產品組成了在不同領域內的完整解決方案,實現了從算法開發同領域內的完整解決方案,實現了從算法開發到實時仿真再到代碼生成與最終產品實現的完到實時仿真再到代碼生成與最終產
3、品實現的完整過程。整過程。主要的典型應用包括:主要的典型應用包括: 控制系統的應用與開發控制系統的應用與開發快速控制原型與快速控制原型與硬件在回路仿真的統一平臺硬件在回路仿真的統一平臺 dSPACE 信號處理系統的設計與開發信號處理系統的設計與開發全系統仿真全系統仿真與快速原型驗證,與快速原型驗證, TI DSP 丶丶 Lyrtech 等信等信號處理產品軟硬件平臺號處理產品軟硬件平臺 通信系統設計與開發通信系統設計與開發結合結合 RadioLab 3G 和和 Candence 等產品等產品 機電一體化設計與開發機電一體化設計與開發全系統的聯合仿全系統的聯合仿真,結合真,結合 Easy 5 丶丶
4、 Adams 等等.17緒論基礎知識數學運算基本編程數據顯示 及存取符號計算數值計算圖形用戶界面GUI Simulink仿真外部接口.18第一章第一章 概述概述 .19 MATLAB將計算、可視化和編程等功能集于一個易于使用的環境,并遇有如下特點: 功能強大; 簡單易學; 編程效率高。.201MATLAB的發展歷程 2MATLAB的特點 3MATLAB的安裝.21 1980年,美國新墨西哥大學計算機科學 系主任Cleve 著手編寫供學生使用的子程 序接口程序,取名為MATLAB; 1984年,推出了MATLAB第一個商業版 本; 1992年,推出MATLAB 4.0版;.22 1997年,推出
5、MATLAB 5.0版; 2000年,推出MATLAB 6.0版; 2004年,推出MATLAB 7.0版; 2008年,推出MATLAB 7.6版;2012年,推出MATLAB R2012A版.23 開發環境 編程 數值處理 圖形化 圖形用戶界面 文件I/O和外部應用程序接口.24MATLAB對PC系統的要求 .25 .26.27 續表.281菜單和工具欄 2命令窗口 3歷史命令窗口 4當前工作目錄窗口 5工作空間窗口.29 本節介紹MATLAB的工作界面和基本的操作方法。 MATLAB的工作界面主要包括: 菜單; 工具欄; 命令窗口; 歷史命令窗口; 當前工作目錄窗口; 工作空間窗口。 .
6、30.31 這里只簡單介紹默認情況下的菜單和工具欄。 【File】菜單主要用于對文件的處理。 【Edit】菜單主要用于復制、粘貼等操 作,與一般Windows程序的類似,在此 不作詳細介紹。 .32 【Debug】菜單用于調試程序。 【Desktop】菜單用于設置主窗口中需要 打開的窗口。 【Window】菜單列出當前所有打開的窗 口。 【Help】菜單用于選擇打開不同的幫助系 統。 .33 當用戶單擊“Current Directory”窗口時,使得該窗口成為活動窗口,同時增加一個如下圖所示的菜單【View】,用于設置如何顯示當前目錄下的文件。.34 當用戶單擊“Workspace”窗口時,
7、使得該窗口成為活動窗口,同時增加如下圖所示的菜單【View】和【Graphics】。.35 命令窗口是MATLAB的主要交互窗口,用于輸入命令并顯示除圖形以外的所有執行結果。 MATLAB命令窗口中的“”為運算提示 符,表MATLAB處于準備狀態。.36 當在提示符后輸入一段程序或一段運算式 后【Enter】鍵,MATLAB會給出計算結 果,并再次進入準備狀態(所得結果將被 保存在工作空間窗口中)。 單擊命令窗口右上角的“ ”按鈕,可以使 命令窗口脫離主窗口而成為一個獨立的窗 口。 .37 主要用于記錄所有執行過的命令; 保留自安裝后所有使用過命令的歷史記 錄,并標明使用時間; 可以通過用鼠標
8、雙擊某一歷史命令來重新 執行該命令; 可以成為一個獨立的窗口。.38 通過上下文菜單,可刪除或粘貼歷史記錄; 可為選中的表達式或命令創建一個M文件; 可為表達式或命令創建快捷按鈕。 .39 當前工作目錄是指MATLAB運行文件時的目錄。只有在當前工作目錄或搜索路徑下的文件、函數可以被運行或調用。如下圖所示。.40 工作空間窗口將顯示目前內存中所有的MATLAB變量的變量名、數據結構、字節數以及類型等信息,如下圖所示。.41 1常用命令 2輸入內容的編輯 3標點 4搜索路徑與擴展.42 通用命令是MATLAB中經常使用的一組命令,這些命令可以用來管理目錄、函數、變量、工作空間、文件和窗口等。下面
9、對這些命令進行介紹。.43 常用命令的功能.44 在命令窗口中,MATLAB提供了控制光標位置和進行簡單編輯的鍵盤按鍵,部分常用的鍵盤按鍵及其功能如下表所示。.45 在MATLAB中,一些標點符號被賦予了特殊的功能,如下表所示。.46 用戶自己書寫的函數有可能并沒有保存在搜索路徑下。要解決這個問題,只需把程序所在的目錄擴展成MATLAB的搜索路徑即可。 .47(1)查看MATLAB的搜索路徑 選擇MATLAB主窗口中的【File】|【Set Path】菜單,進入【設置搜索路徑】對話框。通過該對話框可為MATLAB添加或刪除搜索路徑。 .48 在命令窗口中輸入path或genpath可得到MAT
10、LAB的所有搜索路徑,具體代碼如下:.49(2)設置MATLAB的搜索路徑 方法一:在MATLAB命令窗口中輸入 editpath或pathtool命令或通過【File】 |【Set Path】菜單,進入 “設置搜索路 徑”對話框,通過該對話框編輯搜索路 徑。.50 方法二:在命令窗口執行“path(path, D:Study )”,然后通過 “設置搜索路 徑”對話框查看“D:Study”是否在搜索路 徑中。 方法三:在命令窗口執行“addpath D:Study- end”,將新的目錄加到整個 搜索路徑的末尾。如果將end改為 begin,可以將新的目錄加到整個搜索路 徑的開始。.51 1命
11、令窗口查詢幫助系統 2聯機幫助系統 3聯機演示系統.52 MATLAB為用戶提供了非常完善的幫助系統。下面分別介紹MATLAB的三類幫助系統。 .53常見的幫助命令.54.55.56 用戶可以通過下述方法進入MATLAB的聯機幫助系統。 直接單擊MATLAB主窗口中的“ ”按鈕; 選中Help菜單的前4項中的任意一項; 在命令窗口中執行helpwin、helpdesk 或doc。.57 可以通過以下方式打開聯機演示統。 選擇MATLAB主窗口菜單的【Help】| 【Demos】選項; 在命令窗口輸入demos; 直接在幫助頁面上選擇Demos頁。.58.59.60020406080100-40
12、-2002040Magnitude (dB)Frequency (Hertz)00.20.40.60.81-1-0.500.51WaveformTime (Seconds) Click and drag waveform to changefundamental frequency and amplitude.61 下面以一個簡單的例子展示如何使用MATLAB進行簡單的數值計算。 .62 .63.641簡述MATLAB的主要功能。2在命令窗口輸入“w=3+2”,然后依次使用clear和clc命 令,分別觀察命令窗口、工作空間窗口和歷史命令窗口 的變化。3將硬盤上一已有目錄,加入到搜索路徑,并將
13、其設置為 當前工作目錄。4通過命令窗口,查詢函數sin()的用法。5通過聯機幫助系統,查詢函數inv()的用法。.656通過聯機演示系統,查詢并運行“Control Systems Toolboxes”下的“Case Studies”中的“Yaw Damper for a 747 Aircraft”演示程序。7在命令窗口依次執行“w=5;”、“p=2*w”和“q=p+w”。8在命令窗口同時執行下述代碼: w=5; p=2*w q=p+w.66第二章第二章 基礎知識基礎知識.67 本章著重介紹的MATLAB基礎知識包括: 數據類型; 基本矩陣操作; 運算符; 字符串處理函數。.68 .69 1數
14、值類型 2邏輯類型 3字符和字符串類型 4結構體類型.70 MATLAB中定義了很多種數據類型。本節討論MATLAB中主要的數據類型及其使用方法。 在MATLAB中有15種基本數據類型,每種基本數據類型均以數組/矩陣的形式出現。 .71 數值類型包含 整數; 浮點數; 復數; Inf; NaN.72 MATLAB支持1、2、4和8字節的有符號整數和無符號整數。數據類型的名稱、表示范圍和轉換函數如下表所示。.73 MATLAB有單精度和雙精度兩種浮點數。其名稱、存儲空間、表示范圍和轉換函數如下表所示。 .74 復數包含實部和虛部。在MATLAB中可以用i或者j來表示虛部。.75 Inf和-Inf
15、分別表示正無窮大和負無窮 大。除法運算中除數為0或者運算結果溢 出都會導致inf或-inf的運行結果。 在MATLAB中用NaN(Not a Number) 來表示一個既不是實數也不是復數的數 值。.76 在MATLAB中邏輯類型包含true和false,分別由1和0表示。在MATLAB中用函數logical()將任何非零的數值轉換為true(即1),將數值0轉換為false(即0)。.77 在MATLAB中,數據類型(char)表示一個字符。一個char類型的1n數組稱為字符串string。 .78 結構體類型是一種由若干屬性(field)組成的MATLAB數組,其中的每個屬性可以是任意數據
16、類型。.79 下圖表示了一個結構體(Personel),它包括3個屬性(Name、Score和Salary),其中Name是一個字符串,Score是一個數值,Salary是一個15的向量。 .80 構造一個結構體(數組)有兩種方法。 利用賦值語句 通過賦值語句為結構體中的每個指定屬性賦值,從而構造結構體。 .81 利用函數struct() 在MATLAB中,函數struct()的具體用法如下: 其中,strArray、field和val分別表示結構體名、屬性名和相應的屬性值。 .82 通過結構體數組的下標引用,可以訪問任意元素的所有屬性,同時可以對屬性進行賦值。 .83 2.2.1 矩陣的構造
17、 2.2.2 矩陣大小的改變 2.2.3 矩陣下標引用 2.2.4 矩陣信息的獲取 2.2.5 矩陣結構的改變 2.2.6 稀疏矩陣.84 在MATLAB中,所有的數據均以二維、三維或高維矩陣的形式存儲,每個矩陣的單元可以是數值類型、邏輯類型、字符類型或者其他任何數據類型。 對于標量,可以用11矩陣來表示; 對于一組n個數據,可以用1n矩陣來表 示; 對于多維數組,可以用多維矩陣來表示。 在MATLAB中,用命令whos來顯示數據的類型、存儲空間等信息。 .85 1簡單矩陣構造 2特殊矩陣構造 3向量構造.86 最簡單的方法是采用矩陣構造符“”。構造1n矩陣(行向量)時,可以將各元素依次放入矩
18、陣構造符內,并且以空格或者逗號分隔;構造mn矩陣時,每行如上處理,并且行與行之間用分號分隔。.87.88 在MATLAB中還提供一些函數用來構造特殊矩陣,這些函數如下表所示。 .89續表.90.91 最 簡 單 的 方 法 是 采 用 向 量 構 造 符“:”,其常用的用法如下。(1)a:b返回以a為起點,以1為步長,且所有取值在a與b之間的向量。 .92(2)a:s:b 返回以a為起點,以s為步長,且所有取值在a與b之間的向量。 .93 1矩陣的合并 2矩陣行列的刪除.94 矩陣的合并就是把兩個或者兩個以上的矩陣連接成一個新矩陣。矩陣構造符 可用于構造矩陣,并可以作為一個矩陣合并操作符。 表
19、達式C=A B在水平方向合并矩陣A和B; 表達式C=A;B在豎直方向合并矩陣A和B。.95 具有相同行數的兩個矩陣,合并為一個新矩陣 不具有相同行數的兩個矩陣,不允許合并為一個新矩陣 .96 除了矩陣合并符“”外,還可以使用矩陣合并函數。矩陣合并函數的描述和基本調用格式如下表所示。 .97.98 要刪除矩陣的某一行或者是某一列,只需將該行或者該列賦予一個空矩陣即可。 .991訪問單個元素2線性引用元素3訪問多個元素.100 本小節將介紹通過矩陣下標來存取元素值的方法,包括訪問單個元素、線性引用元素和訪問多個元素等。 .101.102.103 對于矩陣A,線性引用元素的格式為 A(k)。通常這樣
20、的引用用于行向量或列 向量,但也可用于二維矩陣。 MATLAB按列優先排列的一個長列向量格 式(線性引用元素)來存儲矩陣元素。.104.105 操作符“:”可以用來表示矩陣的多個元素。若A是二維矩陣,其主要用法如下: A(:,:) 返回矩陣A的所有元素。 A(i,:) 返回矩陣A第i行的所有元素。.106 A(i,k1:k2) 返回矩陣A第i行的自k1到k2 列的所有元素。 A(:,j) 返回矩陣A第j列的所有元素。 A(k1:k2,j) 返回矩陣A第j列的自k1到k2 行的 所有元素。 若A是多維矩陣,也可以通過類似的方法實現對其訪問。 .107.108.109 1矩陣尺寸信息 2元素的數據
21、類型 3矩陣的數據結構.110 本小節介紹如何獲取矩陣的信息,包括矩陣的尺寸、元素的數據類型和矩陣的數據結構等。 .111 矩陣尺寸函數可以得到矩陣的形狀和大小信息,這些函數如下表所示。 .112.113 查詢元素數據類型信息的部分函數如下表所示。.114.115 判斷矩陣是否為某種指定數據結構的函數如下表所示。.116改變矩陣結構的函數表 .117.118.119 1稀疏矩陣的創建 2查看稀疏矩陣 3稀疏矩陣的運算規則.120 在MATLAB中,可以用滿矩陣存儲方 式和稀疏矩陣存儲方式來存儲矩陣。 若一個矩陣只有少數的元素非零,稱為稀 疏矩陣。稀疏矩陣非零元素及其對應的下 標來表示。 用戶可
22、以創建雙精度、復數和邏輯等類型 的稀疏矩陣。 .121 在MATLAB中,用函數sparse()實現滿矩陣到稀疏矩陣的轉換。.122 在MATLAB中用函數full()實現稀疏矩陣 到滿矩陣的轉換。 在MATLAB中,還可以用函數sparse() 直接創建稀疏矩陣,其具體用法如下。 S = sparse(i,j,s,m,n),其中,i和j分別是稀疏矩陣非零元素的行和列下標,s為相應的非零元素的值,m和n分別是矩陣的行數和列數。 .123 MATLAB還提供一些函數用于創建特殊稀疏矩陣,這些函數如下表所示。 .124 MATLAB提供一些函數用于查看稀疏矩陣的信息,如下表所示。 .125 下面的
23、例子都是基于MATLAB自帶的稀疏矩陣west0479。 .126.127.128 在MATLAB中的各種命令和函數都可以用于稀疏矩陣的運算,并且遵循如下的一些約定。(1)把矩陣變為標量或者定長向量的函數總 是給出滿矩陣;(2)對于標量或者定長向量變換到矩陣的函 數,如函數zeros()、ones()、 eye()、rand()等總是給出滿矩陣;.129(3)從矩陣到矩陣的變換函數將以原矩陣的 形式出現;(4)在參與矩陣擴展的子矩陣(如 A B;C D)中,只要有一個是稀疏矩陣,那 么所得的結果也是稀疏矩陣;(5)在矩陣引用中,將仍以原矩陣形式給出 結果。 .1302.3.1 算數運算符2.3
24、.2 關系運算符2.3.3 邏輯運算符2.3.4 運算優先級.131 在MATLAB中提供了豐富的運算符,包括算數、關系和邏輯等3種運算符。 .132 在MATLAB中,算數運算符的用法和功能如下表所示。 .133續表.134補充說明AB的用法如下: 當A和B都為矩陣時,此運算無定義; 當A和B都是標量時,表示標量A的B次 冪; 當A是標量且B為矩陣時,表示標量A的 B中各元素次冪; 當A為方陣且B為正整數時,表示矩陣A 的B次乘積;.135 當A為方陣且B為負整數時,表示矩陣A逆 的負B次乘積; 當A為可對角化的方陣且B為非整數時,有 如下表達式:.136.137.138 MATLAB中關系
25、運算符的用法和功能如下表所示。 .139 值得注意的是,關系運算符只針對兩個相同長度的矩陣,或其中之一是標量的情況進行運算。 對于前者,是指兩個矩陣的對應元素進行比 較,返回具有相同長度的矩陣; 對于后者,是指這個標量與另一個矩陣的每元 素進行運算。 關系運算C=f(A,B)的運算結果只有0和1兩種情況,其中,函數f()表示關系運算符,0表示不滿足條件,1表示滿足條件。 .140.141 MATLAB提供元素方式和比特方式等邏輯運算符。元素方式邏輯運算符的用法和功能如下表所示,其中例子采用如下矩陣: .142 元素方式邏輯運算符& 、 | 和 與函數and()、or()和not()是等
26、價的。 比特方式邏輯運算符只接受邏輯和非負整數類型的輸入變量,它是針對輸入變量的二進制進行邏輯運算。.143 比特方式邏輯運算符的用法和功能如下表所示,表中例子采用A = 28和B = 200,其對應的二進制分別為11100和。.144 運算符的優先級決定表達式求值順序; 具有相同優先級的運算符從左到右依次進 行運算; 不同優先級的運算符采用先進行優先高的 運算。 .145 由表中可以看到,括號的優先級別最高,因此可以用括號來改變默認的優先等級。 .146.147 2.4.1 字符串的構造 2.4.2 字符串的比較 2.4.3 字符串的查找和替換 2.4.4 字符串與數值間的轉換.148 MA
27、TLAB提供了豐富的字符串操作,包括字符串的創建、合并、比較、查找以及與數值之間的轉換。.149 在MATLAB中,可以用一對單引號來表示字符串。 .150.151.152.153.154 1字符串比較函數 2用關系運算符比較字符串.155 在MATLAB中提供了對字符串、字符串數組和字符子串的比較功能。 .156 在MATLAB中,字符串比較函數如下表所示。 .157.158 在MATLAB中,可以對字符串運用關系運算符,但要求兩個字符串具有相同的長度,或者其中一個是標量。 .159.160 MATLAB提供的一些字符串查找和替換函數如下表所示。 .161.162 MATLAB提供的一些數值
28、轉換為字符串函數如下表所示。 .163續表.164 MATLAB提供的一些字符串轉換為數值函數如下表所示。 .165.1661計算復數3+4i與56i的乘積。2構建結構體Students,屬性包含Name、Age 和Email,數據包括Zhang,18, , 、 Wang,21, 和Li, ,構建后讀取 所有Name屬性值,并且修改Zhang的Age屬 性值為19。.1673用滿矩陣和稀疏矩陣存儲方式分別構造下述矩 陣:4采用向量構造符得到向量1,5,9,41。5按水平和豎直方向分別合并下述兩個矩陣: .1686 分別刪除第5題兩個結果的第2行。7 分別將第5題兩個結果的第2行最后3列的數值
29、改為11 12 13。8 分別查看第5題兩個結果的各方向長度。9 分別判斷pi是否為字符串和浮點數。10分別將第5題兩個結果均轉換為29的矩陣。11計算第5題矩陣A的轉秩。12分別計算第5題矩陣A和B的A+B、A.* B和 AB。13判斷第5題矩陣A和B中哪些元素值不小于4。.16914分別用函數strcat()和矩陣合并符合并如下字 符串: The picture is 和 very good 。15創建字符串數組,其中元素分別為Picture 和 Pitch 。16在第14題結果中查找字符串e。17在第15題結果中匹配字符串Pi。18將字符串very good轉換為等值的整數。19將十進制
30、的50轉換為二進制的字符串。20將十六進制的字符串50轉換為三進制的整 數。 .170第三章第三章 數學運算數學運算.171 本章將著重介紹MATLAB中與數學運算有關的函數和概念。 在MATLAB中一切數據均能以矩陣的形式表示: 針對矩陣整體的數學運算,稱之為矩陣運 算; 針對矩陣元素的數學運算,稱之為矩陣元 素運算。 .172 3.1 矩 陣 運 算 3.2 矩陣元素運算 習 題.173 3.1.1 矩陣分析 3.1.2 線性方程組 3.1.3 矩陣分解 3.1.4 矩陣的特征值和特征向量 3.1.5 矩陣相似變換 3.1.6 非線性運算.174 矩陣運算是線性代數中極其重要的部分,MAT
31、LAB具有強大的矩陣運算能力。 .175 1向量間的距離 2矩陣的秩 3矩陣的行列式 4矩陣的跡 5矩陣的化零矩陣 6矩陣的正交空間 7矩陣的簡化梯形形式 8矩陣空間之間的角度.176 MATLAB提供的部分矩陣分析函數如下表所示。 .177.178.179 矩陣A中線性無關的列向量個數稱為列秩,線性無關的行向量個數稱為行秩。可以證明列秩與行秩是相等的。.180.181.182.183 矩陣的跡定義為矩陣對角元素之和。在MATLAB中用函數trace()來計算矩陣的跡。 .184 對于非滿秩矩陣A,若存在矩陣Z使得AZ = 0且ZTZ = I,則稱矩陣Z為矩陣A的化零矩陣。在MATLAB中用函
32、數null()來計算矩陣的化零矩陣。 .185 矩陣A的正交空間Q滿足QTQ = I,且矩陣Q與A具有相同的列基底。.186.187 矩陣A的簡化梯形形式為 ,其中Ir為r階單位矩陣。*0*rI.188.189 矩陣空間之間的角度代表具有相同行數的兩個矩陣線性相關程度,夾角越小代表線性相關度越高。 .190.191 線性方程組求解問題,可以表述為給定兩個矩陣A和B,求解X使得AX=B或XA=B。XA=B可以表示為AY=B,且X=Y。下面僅討論AX=B的情況。 .192.193.194 1Cholesky分解 2LU分解 3QR分解 4奇異值分解 5Schur分解.195 矩陣分解是把一個矩陣分
33、解成比較簡單或者對它性質比較熟悉的若干矩陣的乘積的形式。 本小節將介紹幾種矩陣分解的方法。.196矩陣分解函數表.197 Cholesky分解是把對稱正定矩陣A表示為上三角矩陣R的轉置與其本身的乘積,即A = RTR。 .198.199 對于稀疏矩陣,MATLAB中用函數cholinc()計算不完全Cholesky分解,具體用法如下: R = full(cholinc(sparse (X),DROPTOL),其中DROPTOL為不 完全Cholesky分解的丟失容限; R = full(cholinc(sparse (X),0),完 全Cholesky分解。 .200 高斯消去法又稱LU分解,
34、 將任意一個方陣A分解為一個交換下三角 矩陣L和一個上三角矩陣U的乘積,即 A=LU。 交換下三角矩陣為下三角矩陣經行變換的 結果。.201 LU分解在MATLAB中用函數lu()來實現,具體用法如下: L,U = lu(X),X為一個方陣,L為交換 下三角矩陣,U為上三角矩陣,滿足關系 X=L*U; L,U,P = lu(X),X為一個方陣,L為下 三角矩陣,U為上三角矩陣,P為置換矩 陣,滿足關系P*X = L*U或X =P-1 *L*U。 .202 考慮線性方程組AX=B和矩陣A的LU分解,線性方程組可改寫成L*U*X=B,由于左除算符可以快速處理三角矩陣,因此:X=U(LB) 矩陣的行
35、列式和逆也可以利用LU分解來計算,如det(A)=det(L)*det(U)inv(A)=inv(U)*inv(L).203.204 對于稀疏矩陣,在MATLAB中提供了函數luinc()來做不完全LU分解,其具體用法如下: L U= luinc(X,DROPTOL),其中X、L和U 的含義與函數lu()中的變量相同,DROPTOL為 不完全LU分解的丟失容限。當DROPTOL設為0 時,退化為完全LU分解。 L,U = luinc(X,0),0級不完全LU分解。 L,U,P = luinc(X,0),0級不完全LU分解。.205 QR分解就是將mn的矩陣A分解為mn的矩陣Q和nn的上三角矩陣
36、R的乘積,且Q*Q=I,即A=Q*R。 .206 在MATLAB中QR分解是由函數qr()來實現,其具體用法如下: Q,R = qr(A) 滿足A=Q*R。 R = qr(A), 返回上三角矩陣R。 .207.208 奇異值分解就是將mn的矩陣A分解為A=U*S*V,其中U為mm的酉矩陣,V為nn的酉矩陣,S為mn的矩陣,并可如下表示: ,其中 , , 000S12,rdiag ( )rrank A0(1,2, )iir.209 在MATLAB中奇異值分解是由函數svd()來實現,其具體用法如下:.210.211 Schur分解就是將復方陣A分解為A=U*L*U,其中U為酉矩陣,L為上(下)三
37、角矩陣,其對角線元素為A的特征值。 .212 在MATLAB中Schur分解是由函數schur()來實現,其具體用法如下: U,L = schur(A),滿足A=U*L*U, 其中L為上三角矩陣。 L = schur(A),返回上三角矩陣L。 .213.214 方陣A的特征值和其對應的特征向量滿足下式:A*=* .215 在MATLAB中用函數eig()來計算特征值和其對應的特征向量,其具體用法如下: d = eig(A),返回矩陣A的所有特征值。 V,D = eig(A),返回矩陣A的特征值和 特征向量。 .216.217.218 1對角陣變換 2Jordan變換.219 矩陣相似變換是指,
38、對于方陣A和非奇異矩陣B可得到相似矩陣X=B-1*A*B。.220 對于方陣A,若V D=eig(A)得到的矩陣V非奇異,則A可經過相似變換得到對角陣,即D=V-1*A*V,也稱矩陣A可對角化。 .221.222 對于方陣A,若V D=eig(A)得到的矩陣V奇異,則A經過相似變換將不能得到對角陣,只能得到其對應的Jordan標準型。.223.224 在MATLAB中用函數jordan()來實現Jordan變換,其具體用法如下: V,D = jordan(A),滿足 D=V-1*A*V。 D = jordan(A),返回矩陣A對應的 Jordan標準型。 .225.226 1矩陣指數運算 2矩
39、陣對數運算 3矩陣開平方運算 4通用矩陣運算.227 MATLAB提供一些矩陣的非線性運算函數,其功能如下表所示。 .228.229.230 矩陣對數運算是矩陣指數運算的逆運算,在MATLAB中用函數logm()來計算矩陣對數,其具體用法如下: L = logm(A),返回矩陣A的對數。 .231.232 對于方陣A,可以計算它的開平方得到矩陣X,即滿足X*X=A。如果矩陣A是奇異的,它有可能不存在平方根X。 在MATLAB中,有兩種計算矩陣A平方根的方法,即A0.5和sqrtm(A)。函數sqrtm()比A0.5的運算精度更高,其具體用法如下: X = sqrtm(A),返回矩陣A的平方根X
40、。 .233.234 MATLAB提供通用矩陣運算的函數funm(),其具體用法如下: F = funm(A,fun),將指定函數fun作用 在方陣A上。 .235 可以使用的指定函數fun如下表所示。 .236.237 3.2.1 三角函數 3.2.2 指數和對數函數 3.2.3 復數函數 3.2.4 截斷和求余函數 3.2.5 特殊函數.238 本節將介紹矩陣元素的數學函數: 包括三角函數; 指數/對數函數; 復數函數; 截斷/求余函數; 特殊函數。.239 MATLAB提供一些三角函數,其功能如下表所示。.240續表.241 MATLAB提供一些指數和對數函數。 .242指數和對數函數表
41、 .243.244 MATLAB提供一些復數函數,其功能如下表所示。 .245 MATLAB提供一些截斷和求余函數,其功能如下表所示。 .246.247.248 1工程函數 2數論函數 3坐標變換函數.249 本小節介紹一些用途比較特殊的數學函數,包括應用于工程上的函數(工程函數)、數論函數和坐標變換函數。 .250 工程函數經常在數學、物理和工程等問題中出現,在MATLAB中提供一些工程函數。 .251表工程函數 .252.253.254 MATLAB提供一些數論函數,其功能如下表所示。 .255.256 在MATLAB中提供一些坐標變換函數,其功能如下表所示。 .257.2581計算矩陣A
42、的范數、行列式、秩、化零空間和正 交空間。2求解線性方程組AX=B,其中A如第1題所示, B=1 1 1 1 1T。3對矩陣A進行LU分解和Schur分解,其中A如第 1題。 17 24 1 8 50 23 5 7 14 49 4 6 13 20 43 10 12 19 21 62 11 18 25 2 56A.2594對矩陣A的前4行進行QR分解和奇異值分解,其 中A如第1題。5計算矩陣A的特征根及對應的特征向量,判斷矩 陣A是否可對角化,其中A如第1題。6計算矩陣A的指數、開平方和余弦值,其中A如 第1題。7計算矩陣A每個元素的指數、開平方和余弦值 (元素單位為度),其中A如第1題。.26
43、08 計算復數矩陣C每個元素的模、相角和共軛。9 分別使用函數fix()、floor()、ceil()和 round(),計算第8題中的相角結果。10將2-i的模結果近似為有理數,并以數值形式 顯示。11計算,其中m = 4!和n是42與35的最大公因 數。12將球坐標系中的點(1,1,1)分別轉換到笛卡爾 坐標系和極坐標系。 3+4i 2-i -i 2 -2 0C.261第四章第四章 基本編程基本編程.262 MATLAB提供豐富的函數庫,并可以進行程序設計,編寫擴展名為.m的M文件,實現各種程序設計功能。 MATLAB提供大量的函數,包括內建函數和自帶函數。用戶也可以利用M文件來創建函數、
44、函數庫和腳本。 .263.264.265 當需要創建一個M文件時,可以通過【File】|【New】|【M-File】菜單進入文本編輯器界面。 當需要打開一個M文件時,可以通過【File】|【Open】菜單進入文件選擇的目錄界面。 本章將著重介紹M文件編程的規則和注意事項。 .266 4.1.1 函數 4.1.2 腳本 4.1.3 子函數與私有函數 4.1.4 偽代碼.267 M文件有函數(Functions)和腳本(Scripts)兩種格式。 M文件可以在任意的文本編輯器中進行 創 建 和 編 輯 , 但 推 薦 和 默 認 使 用MATLAB自帶的文本編輯器和Notebook。 .268 M
45、ATLAB中許多常用的函數都是函數式M文件。 函數被調用時,通過獲取外部參數進行運算,并向外部返回運算結果。 函數內部的變量都是隱含的,存放在函數本身的工作空間內。.269.270.271.272.273.274.275 腳本也是擴展名為.m的文件,可包含MATLAB的各種命令。在命令窗口中直接鍵入此文件的文件名,MATLAB可逐一執行文件內的所有命令。 .276 將腳本所在目錄設置為當前工作目錄,并在文本編輯器中打開腳本后,可通過如下方法運行腳本: 單擊【Debug】菜單下的【Run】; 單擊快捷鍵F5;單擊工具條上的圖標 。 腳本運行過程所產生的變量都是全局變量,都駐留在MATLAB工作空
46、間內。 .277.278.279 結合上例,對函數和腳本進行總結如下。(1)函數名必須與文件名相同。(2)腳本沒有輸入參數和返回值。(3)函數可以包括零個或多個輸入參數和返 回值,如函數nargin和nargout包含輸 入參數和返回值的個數。.280(4)函數被調用時,MATLAB會為它開辟一 函數工作空間(Function workspace),用來存放中間變量, 當執行完函數文件的最后一條命令或 者遇到return命令時就結束該函數的 運行,返回函數的輸出,同時將臨時 工作空間清空。.281(5)在M文件中,從開頭到第一個非注釋行 之間的第一個注釋行組(之間無空行) 是幫助文本。(6)函
47、數中的變量(除特殊聲明外)都是局部變 量,而腳本中的變量都是全局變量,關于變量 的有關內容詳見第4.2節。(7)在函數中調用腳本文件,等價于在函數中將 腳本文件的內容粘貼在調用的位置。.282 一個M文件可以包含多個函數,其中,一個是主函數,其他是子函數。 主函數必須出現在最上方,其后可有若干子函數,子函數的次序可隨意調整。主函數和各子函數的工作空間都是彼此獨立的。 私有函數是主函數的一種,它只能夠在一個特定的限定函數群中可見。.283 當M文件中需要調用某一個函數時,MATLAB是按照以下順序來搜尋的: 檢查此函數是否是子函數; 檢查此函數是否為私有目錄的函數; 從所設定的搜尋路徑搜索此函數
48、。 搜索過程中,只要找到與第一個文件名相符的函數就會立即取用而停止搜索。 .284 一個M文件首次被調用時,MATLAB將對該M文件進行語法分析,并把生成的相應偽代碼(P碼)存放在內存中。此后當再次調用該M文件時,將直接運行該文件在內存中的偽代碼。偽代碼文件和原碼文件具有相同的文件名,但其擴展名為.p。 偽代碼文件不是只有當M文件被調用時才產生,也可使用pcode命令預先生成。 .285 4.2.1 變量類型 4.2.2 程序控制結構.286 MATLAB的主要功能雖然是數值運算,但是它也是一個完整的程序語言,包括各種語句格式和語法規則。但與C語言不同的是,MATLAB中的變量是不需要事先定義
49、的,如前3章的例子。 .287 在MATLAB中,變量名必須以字母開頭,之后可以是任意字母、數字或下劃線,但之間不能有空格;區分大小寫;第63個字符之后的部分將被忽略。.288 除了上述命名規則外,MATLAB還提供一些特殊的變量,如下表所示。 .289 除命名規則外,變量命名時還需要注意以下兩個方面:(1)變量名不能與已有函數名相同,否則在 內存中有該變量時將不能調用同名函 數;(2)變量名不能與MATLAB預留的關鍵字和 特殊變量名相同,否則系統會顯示錯誤 信息。 .290 變量按照作用范圍分為局部變量和全局變量。在MATLAB中使用命令global聲明全局變量,如下所示: 需要使用指定全
50、局變量的M文件,都必須在各自的代碼中聲明此全局變量。只要存在聲明某全局變量的M文件,則全局變量存在。 .291 在使用全局變量中需要注意以下幾個方面。 在使用之前必須首先定義,建議將定義放在函 數體的首行位置。 雖然對全局變量的名稱并沒有特別的限制,但 是為了提高程序的可讀性,建議采用大寫字符 命名全局變量。 全局變量會損壞函數的獨立性,使程序的書寫 和維護變得困難,尤其是在大型程序中,不利 于模塊化,不推薦使用。 .292.293 1順序結構 2循環結構 3選擇結構 4其他控制結構.294 對于實現任何功能的程序,均可由順序、循環和選擇3種基本結構組合實現。為了更方便地設計程序,還需要一些特
51、殊的控制結構,如跳出循環結構。下面將分別進行介紹。 .295 順序結構就是由前至后依次執行程序的各條代碼,直至最后一條代碼。腳本文件就是典型的順序結構。.29601234567891000.10.20.30.40.50.60.7Step ResponseTime (sec)Amplitude.297 循環結構是按照給定的條件,重復執行指定的代碼。該結構一般用于有規律的重復運算。在MATLAB中包括for循環和while循環。 .298.299.300.301.302.303 選擇結構是根據給定的條件來執行不同的代碼。在MATLAB中有if-else-end和switch-case-otherw
52、ise兩種結構。 .304.305.306.307.308.309 在程序設計中經常遇到提前終止循環、跳出子程序、顯示出錯信息等情況,主要有continue、break、return、echo、error、trycatch等。下面分別對各結構進行介紹。 .310 其作用是結束本次循環,即跳過循環體中尚未執行的代碼,接著進行下一次是否執行循環的判斷。 .311 它的作用是終止本次循環,跳出所在層循環。 .312.313.314.315 此命令可使正在運行的函數正常退出,并返回調用它的代碼段繼續運行,它也可強制結束該函 數 的 執 行 。 如 M A T L A B 自 帶 函 數showopce
53、vents() 。 .316 執行M文件時,通常在命令窗口是看不到執行過程的,但在特殊情況下(比如演示)要求M文件的每條命令都要顯示出來。這時可以用echo命令實現這樣的功能。 .317 對于腳本,echo命令可以用以下方式來實現: .318 對于函數,echo命令可以用以下方式來實現: .319.320.321.322 此命令用來提示并接收用戶從鍵盤輸入數據、字符串或表達式的值,語法規則如下: .323.324 此命令將停止文件的執行并將控制權交給鍵盤,此時命令窗口的提示符由“”變成“K”,當輸入return后,控制權將交回文件。該命令對程序的調試和在程序運行中修改變量值都很方便。 .325
54、 此命令用于暫時中止程序的運行。該命令對程序的調試和查詢中間變量值時很方便。該命令的語法規則如下: .3264.3.1 直接調試法4.3.2 工具調試法.327 在編譯和運行程序時出現錯誤(警告)無法避免,因此掌握程序調試的方法和技巧對提高工作效率很重要。 下面針對語法錯誤和邏輯錯誤推薦兩種調試方法,即直接調試法和工具調試法。 .328 對于簡單的程序往往采用直接調試法,通常采取的措施如下。(1)通過分析后,將重點懷疑語句后的分號 刪掉,將結果顯示出來,然后與預期 值進行比較。(2)單獨調試函數時,將函數聲明行注釋掉,并 定義輸入變量的值,然后以腳本方式運行,這 樣可保存中間變量,進而進行分析
55、和找出錯 誤。.329(3)在程序中的適當位置添加輸出變量值的 代碼。(4)在程序中的適當位置添加keyboard命 令。 復雜的程序,必須采用工具調試法,即 借 助 M AT L A B 提 供 的 工 具 調 試 器(Debugger)進行調試。 .330 1以命令行為主的程序調試 2以圖形界面為主的程序調試.331 MATLAB提供了調試程序的工具,利用這些工具可以提高編程的效率,包括命令行的調試函數和圖形界面的菜單命令。 .332 以命令行為主的程序調試手段具有通用性,可以適用于各種平臺,它主要是應用MATLAB提供的調試命令。 在命令窗口輸入help debug可以看到對于這些命令的
56、簡單描述,下面分別進行介紹。 .333 這是最重要的部分,可以利用它來指定程序代碼的斷點,使得程序在斷點前停止執行,并進入調試模式,從而可以檢查當前各個變量的值。 .334 dbstop in mfile 在文件名為mfile的M文件的第一個可執行語句前設置斷點。 dbstop in m lineno 在文件名為mfile的M文件的第lineno行設置斷點。如果第lineno行為非執行語句,則在其后的第一個可執行語句前設置斷點。.335 dbstop in m subfun 在文件名為mfile的M文件的子程序subfun的第一個可執行語句前設置斷點。 dbstop if error 在程序運
57、行遇到錯誤時,自動設置斷點。這里的錯誤不包括trycatch之間的錯誤。.336 dbstop if all error 在程序運行遇到錯誤時,自動設置斷點。這里的錯誤包括trycatch之間的錯誤。 dbstop if warning 在程序運行遇到警告時,自動設置斷點。.337 dbstop if caught error 在程序運行trycatch間代碼遇到錯誤時,自動設置斷點。 dbstop if naninf 或 dbstop if infnan 當程序運行遇到無窮值或者非數值時,自動設置斷點。 .338.339 在命令窗口輸入dbstop in function8,并打開文件fun
58、ction8.m就可看到如下圖所示的界面,它在第一個可執行語句前設置了斷點。 .340 單擊圖中紅點,會發現紅點被取消,此時回復到初始狀態。然后在命令窗口依次 輸 入 d b s t o p i f e r r o r 和function8(magic(3),可得到如下的運行結果和如下圖所示的界面。 .341.342 dbclear all 清除所有M文件中的所有斷點。 dbclear all in mfile 清除文件名為mfile的M文件中的所有斷點。.343 dbclear in mfile 清除文件名為mfile的M文件中第一個可執行語句前的斷點。 dbclear in m linen
59、o 清除文件名為mfile的M文件中第lineno行語句前的斷點。.344 dbclear in m subfun 清除文件名為mfile的M文件中子程序subfun的第一個可執行語句前的斷點。 dbclear if error 清除由dbstop if error設置的斷點。 dbclear if warning 清除由dbstop if warning設置的斷點。.345 dbclear if naninf 清除由dbstop if naninf設置的斷點。 dbclear if infnan 清除由dbstop if infnan設置的斷點。.346 dbcont 此命令可從斷點處恢復程
60、序的執行,直到遇到程序的另一個斷點或錯誤。 .347 dbstack 此命令顯示M文件名和斷點產生的行號、調用此M文件的文件名和行號等,直到最高層的M文件,即列出了函數調用的堆棧。 .348 dbstatus 此命令可列出所有的斷點,包括錯誤、警告、nan和inf等。 dbstatus mfile 此命令可列出文件名為mfile的M文件中的所有斷點。 .349 dbstep 執行當前M文件下一個可執行語句。 dbstep nlines 執行當前M文件下nlines行可執行語句。.350 dbstep in 當下一條可執行語句是對另一個函數的調用,此命令將從被調用函數的第一個可執行語句執行。 dbste
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營運車輛協議轉讓協議書
- 車輛運輸協議補充協議書
- 餐飲供應合同終止協議書
- 物流勞務承包合同范本
- 車輛債務轉讓合同范本
- 裝修店鋪轉讓合同范本
- 校園文化活動與社團發展計劃
- 雇主民事經濟和解協議書
- 基于云計算的數字化轉型策略及其對組織架構和流程影響的分析報告
- 抖音合同協議書怎
- 外研版一起點四年級下冊單詞默寫表
- 綜合管廊應急救援預案
- 《教師書寫技能》課程教學大綱
- 2024年廣西中考化學真題【附答案】
- 期末(試題)-2023-2024學年英語六年級下冊
- 2022年遼寧省高考數學試卷(新高考II)附答案解析
- 阿爾派車載IVA-W502E使用說明書
- GB/T 10069.3-2024旋轉電機噪聲測定方法及限值第3部分:噪聲限值
- 2024架空平行集束絕緣導線低壓配電線路設計與施工規程
- 中國高血壓防治指南(2024年修訂版)核心要點解讀
- 擴心病的護理查房
評論
0/150
提交評論