恒潤公司matlab培訓(xùn)_第1頁
恒潤公司matlab培訓(xùn)_第2頁
恒潤公司matlab培訓(xùn)_第3頁
恒潤公司matlab培訓(xùn)_第4頁
恒潤公司matlab培訓(xùn)_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基礎(chǔ)和編程入門2 - 1本章概述本章概述開始使用在命令行進行計算矩陣計算矩陣索引的幫助功能桌面開始使用用命令行計算數(shù)據(jù)類型的使用建立和使用文件矩陣計算矩陣索引數(shù)據(jù)類型幫助特點桌面2 2002 The MathWorks, Inc./九州恒潤科技建立和使用文件2 - 2開始使用雙擊圖標,啟動在計算機屏幕上可以看到類似下圖界面。要使用缺省視圖,可以使用缺省設(shè)置,選擇ViewDesktop Layout Default2 - 3開始使用 2002 The MathWorks, Inc./ 九州恒潤科技改變開始時只使用桌面顯示命令行窗口,主要為講解的功能,而不是桌面。如果想把桌面改變?yōu)槊钚写翱谠O(shè)置,

2、選擇ViewDesktop Layout Window Onlyd桌面其它特點的轉(zhuǎn)換在后續(xù)課程講解。2 - 4改變桌面外觀 2002 The MathWorks, Inc./ 九州恒潤科技返回缺省的桌面下圖顯示桌面外觀缺省狀態(tài),在命令窗口中使用缺省配置ViewDesktop LayoutDefault。這里有三個桌面窗口。這些窗口屬性和內(nèi)容在后面會講到。2 - 5返回缺省的桌面 2002 The MathWorks, Inc./ 九州恒潤科技修改桌面外觀有許多方法可以修改桌面的外觀。使用Preference框,可以改變許多特征,如:桌面的顏色和字體大小。要打開Preference框,選擇Fil

3、ePreferen左邊瀏覽器窗口顯示了可以定制的各種對象。General 對整個桌面起作用d Window d HistoryEditor/DebuggerHelpCurrent DirectoryWorkspaceArray EditorGUIDE: 圖形用戶界面設(shè)計環(huán)境Figure Copy Template2 - 6修改桌面外觀參考: Utilityds 2002 The MathWorks, Inc./ 九州恒潤科技桌面內(nèi)容桌面允許用戶啟動不同功能,如:Workspace 瀏覽器d History 窗口Current Directory 窗口Workspace(工作區(qū))瀏覽器,用戶可以

4、查看當前工作區(qū)中的所有變量d History(命令)窗口,列出以前曾經(jīng)輸入過令。可以在該窗口中選擇和執(zhí)行這些命令 (右鍵單擊進行選擇)。Current Directory(當前目錄)窗口,可以查看當前目錄的內(nèi)容,包括文件和子目錄。2 - 7桌面的組成 2002 The MathWorks, Inc./ 九州恒潤科技用命令行計算開始學(xué)習使用的最好方法是在命令行輸入一些基本的計算指令,并看一看輸出。在命令行進行計算時應(yīng)注意:結(jié)果沒有賦值變量時,用ans作為缺省變量。分號計算結(jié)果的屏幕輸出。 -5/(4.8+5.32)2ans =-0.048821 (3+4i)*(3-4i)ans =25 cos(

5、pi/2) ans =a =b = ab2;5;ans =32 x yy =5/2*pi;sin(x)6.1232e-017exp(acos(0.3)ans =3.5471= zz =asin(y)1.5708可以用于普通的數(shù)學(xué)演算。數(shù)值結(jié)果可以通過賦給變量賦值保存起來供以后使用,變量于工作區(qū)(Workspace)中,所有的計算結(jié)果都保存為雙精度浮點類型。最好記住常用鍵的功能:Esc Ctrl+C滾動顯示前面 清除當前命令行令退出當前的操作,返回命令行控制2 - 8在命令行進行計算作為計算器設(shè)置變量分號 屏幕輸出如果未指定返回變量,結(jié)果 在ans中函數(shù)輸入使用括弧 ( ) cmd_line數(shù)值

6、以雙精度浮點格式 2002 The MathWorks, Inc./ 九州恒潤科技 a = 2; b = 5; ab ans =32 x = 5/2*pi; y = sin(x) y =1 z = asin(y) z =1.5708 -5/(4.8+5.32)2ans =-0.048821 (3+4i)*(3-4i)ans = 25 cos(pi/2) ans =6.1232e-017 exp(acos(0.3) ans =3.547變量和文件的使用下面是一些進行變量和文件操作時常用的函數(shù)。2 - 9函數(shù)用途cd/pwd, ls/dir目錄瀏覽what顯示目錄中的文件 (按類型分組)! (ba

7、ng)激活操作系統(tǒng)which確定所的目標clear清除內(nèi)存中的函數(shù)和變量who, whos顯示工作區(qū)的變量size返回矩陣的大小 (行數(shù)和列數(shù))文件和變量的使用參考: Utilityds 2002 The MathWorks, Inc./ 九州恒潤科技函數(shù)用途CD/PWD, LS/DIR目錄瀏覽WHAT顯示目錄中的文件 (按類型分組)! (bang)激活操作系統(tǒng)WHICH確定所 的目標CLEAR清除內(nèi)存中的函數(shù)或變量WHO, WHOS顯示工作區(qū)的變量SIZE返回矩陣的大小 (行數(shù)和列數(shù))工作空間變量瀏覽工作空間變量瀏覽允許客戶查看在工作區(qū)中創(chuàng)建的變量,見下例。2 - 10工作空間瀏覽器 200

8、2 The MathWorks, Inc./ 九州恒潤科技數(shù)組編輯器使用數(shù)組編輯器可以打開并編輯2-D數(shù)值和字符串數(shù)組。使用數(shù)組編輯器的方法:在工作區(qū)瀏覽器中雙擊該變量。在工作區(qū)瀏覽器中選中該變量,并點擊 Open。在用的數(shù)組。命令行使用openvar 命令。6.5數(shù)組編輯器,直接可以顯示最大含有65535個元素openvarx數(shù)組編輯器可對數(shù)組進行修改或拷貝,右擊數(shù)組編輯器選項可以實現(xiàn)如下功能:從/向剪切板剪切,拷貝和粘貼信息或刪除行和列(可能的話)清除單元的內(nèi)容(把值改為0)雙擊注意:數(shù)組編輯器的剪切板功能和其它程序,如Excel,是相兼容的。也就是說,數(shù)組可以隨意地從Excel拷貝到,也

9、可以從拷貝到Excel。2 - 11數(shù)組編輯雙擊 openvar x 2002 The MathWorks, Inc./ 九州恒潤科技編輯2維數(shù)值數(shù)組命令歷史窗口d History(命令)窗口列出的是以前曾經(jīng)輸入過快捷方式: Copy令。右鍵單擊可以看到如下拷貝選擇項執(zhí)行所選選擇的語句把選擇的語句導(dǎo)入M文件Editor/Debugger中刪除所選擇的一行語句刪除選擇的語句行(多行)刪除所有窗口中保存的歷史內(nèi)容Evaluate Selection Create M-FileDelete Selection Delete to Selection Delete Entire History2 -

10、12命令歷史顯示窗口 2002 The MathWorks, Inc./ 九州恒潤科技當前路徑查看窗口Current Directory(當前路徑)窗口顯示當前路徑下的文件,可以在其中雙擊打開或裝載文件。也可以改變路徑,查找相關(guān)文件名,在當前路徑下增加子文件夾或子路徑。2 - 13當前路徑查看窗口 2002 The MathWorks, Inc./ 九州恒潤科技改變搜索路徑用路徑瀏覽器添加和刪除搜索路徑。路徑在路徑瀏覽器中出現(xiàn)的順序即是的搜索順序。注意:當為添加路徑時,添加的路徑將加在搜索路徑的頂端,也就是說路徑上用戶自己的函數(shù)將代替的同名函數(shù)而優(yōu)先調(diào)用。如不想這樣,就把路徑加到列表的底部。p

11、athtoolhelp help helppath addpath rmpath2 - 14改變的搜索路徑 pathtool 2002 The MathWorks, Inc./ 九州恒潤科技幫助信息中有三種方法可以獲得幫助,可以在命令行輸入:help sin helpwin sin doc sinHelp 和helpwin命令列出的內(nèi)容相同,只是 helpwin 顯示的內(nèi)容是以單獨窗口顯示幫助文檔。當然,可以直接使用幫助命令,不用指定函數(shù)名: helpwin docHelpwin 命令列出所有在 Help window 中能夠顯示的各種幫助。如果您正在尋找某種函數(shù),如2-D繪圖,那么這個列表就

12、非常有用了。對2-D繪圖而言,您可以進一步選擇查看graph2d獲得更詳細的信息doc命令在幫助窗口中調(diào)出關(guān)于特定函數(shù)信息的 HTML 頁。doc命令不僅能夠顯示函數(shù)的語法,還簡述了函數(shù)使用了什么樣算法實現(xiàn),并提供了一個可以在命令行運行的例子。注意:文檔命令doc使用的信息來自文檔光盤,這意味著用doc命令,文檔光盤必須在光盤驅(qū)動器或裝在本地機器上。2 - 15幫助功能如何知道下列函數(shù)的語法? COS, ACOS, EXP, SIN, ASIN為了得到所使用函數(shù)的類型,可以用下列命令: help function_name helpwin function_name doc function_

13、name 2002 The MathWorks, Inc./ 九州恒潤科技通過開始菜單幫助文檔從在Start也可以在開始按鈕幫助文檔,開始按鈕桌面最左下方。打開幫助文檔:Help命令行輸入下列命令打開幫助文檔: helpbrowser開始菜單列有所有已安裝的 后,相關(guān)產(chǎn)品就會打開。例如,的產(chǎn)品,選擇相應(yīng)產(chǎn)品產(chǎn)品可以使用不同的功能,如Import Wizard, Profiler, Help 窗口, Demos和GUI Builder。其中 Import Wizard, Profiler,和GUI Builder會在文件 I/O,編程入門,GUI等章節(jié)中講授。2 - 16通過開始菜單幫助文檔 2

14、002 The MathWorks, Inc./ 九州恒潤科技幫助瀏覽器幫助瀏覽器包含已安裝產(chǎn)品的所有信息,每個產(chǎn)品下都有樹狀圖,可以通過路徑圖找到該產(chǎn)品的信息,函數(shù)和可打印文檔。通過幫助導(dǎo)航器(Help Navigator )可以使用很多幫助瀏覽器提供的強大功能。內(nèi)容索引搜索演示Contents:展開樹狀視圖瀏覽各專題Index:利用關(guān)鍵字查詢專題。Search:搜索文檔。有四種搜索方式: Full Text:關(guān)鍵字全文搜索。段的詞。Titles:搜索文檔標題Function Name:請參見有關(guān)函數(shù)的專題。Online Knowledge Base:搜索互聯(lián)網(wǎng)上的技術(shù)信息庫。Demos:瀏

15、覽和運行演示文檔。參考:Using第 4-6 - 4-14 頁2 - 17幫助信息瀏覽內(nèi)容搜索索引演示Contents(內(nèi)容)由樹型圖瀏覽Index(索引)由關(guān)鍵字查找Search(搜索)搜索文檔,4個搜索變量: Full Text(全文搜索) 對關(guān)鍵字全文匹配搜索Titles(文檔 ) 僅匹配文檔的 部分內(nèi)容 Function Name(函數(shù)名稱) 參見函數(shù)描述相關(guān)部分 Online Knowledge Base( 信息庫) 搜索互聯(lián)網(wǎng)上的技術(shù)支持信息庫的內(nèi)容 Demos(演示) 查看并運行產(chǎn)品演示例子 2002 The MathWorks, Inc./ 九州恒潤科技矩陣的使用學(xué)習(意為 M

16、ATrix LABoratory )的好方法是學(xué)會如何使用矩陣。在德國畫家兼業(yè)余數(shù)學(xué)家( Albrecht Drer ) 的文藝復(fù)興時期的銅版畫憂郁( Melancholia I ) 中出現(xiàn)了一個矩陣的例子。該畫中帶有一些具有象征意義的數(shù)學(xué)符號,如果仔細看的話,就可以發(fā)現(xiàn)右上角有一個矩陣。該矩陣被稱為幻方矩load durer image(X) colormap(map)square ),在陣(那個時代的很多人相信,這個矩陣有很多神秘的性質(zhì)。load detail image(X) colormap(map)在中,矩陣是一個矩形的數(shù)值數(shù)組。一些矩陣帶有特別的含義,如 1X1 的矩陣稱為標量,而

17、只包含一行或一列的矩陣稱為向量。還有其它數(shù)值或非數(shù)值數(shù)據(jù)的方式,但在開始時,最好把所有的東西都當成是矩陣。中的都設(shè)計得盡量接近自然。一般編程語言只允許一次操作一個數(shù)值,而在一個矩陣,又快又方便。下可以一次處理是交互式的,其基本數(shù)據(jù)元素是無需進行維數(shù)定義的矩陣。矩陣的元素可以是數(shù)值(數(shù)值數(shù)組)或是字符(字符數(shù)組)。2 - 18矩陣的應(yīng)用= MATrix LABoratory load durer load detail image(X) image(X) colormap(map) colormap(map) 2002 The MathWorks, Inc./ 九州恒潤科技數(shù)值數(shù)組的輸入方括號輸

18、入一個小型矩陣最簡便的方法是在方括號中顯式地輸入。a =a =1, 2; 3, 41324a=1 2;3 4b = 2:-0.5:0c = rand(2,4)逗號或空格表示一行中元素的分隔。分號表示行的結(jié)尾。冒號的使用使用冒號可以快速地生成數(shù)列。這個操作符可用于生成等間loadmy_data隔、單調(diào)(遞增或遞減)的數(shù)值向量。若不指統(tǒng)默認為是“1”。使用語法是:數(shù)列 = 開始值:步長值:終止值 b = 2:-0.5:0b =長值,則系2.0000實用函數(shù)1.50001.00000.50000有一些函數(shù)用以生成特定的矩陣,參見本節(jié)末尾的“實用函數(shù)”參考頁。 c = rand(2,4)載入 MAT

19、文件如果有MAT文件 二進制數(shù)據(jù)文件,則可以使用load 命令從這些文件中載入變量。直接使用 load 命令將把MAT文件中的所有的變量載入進來。在本課程“文件的I/O” 一節(jié)中將詳細 load my_data有關(guān) MAT 文件的專題。2 - 19輸入數(shù)值數(shù)組行分隔符:分號 (;)列分隔符:空格 / 豆號 (,)用冒號運算符 (:)生成數(shù)列用于創(chuàng)建矩陣的函數(shù)(參考: Utilityds)用LOAD裝載以前保存的變量 num_array1 2002 The MathWorks, Inc./ 九州恒潤科技矩陣一定是矩形方陣。 (未定義的元素設(shè)置為零) a=1 2;3 4a =使用方括號 1234

20、b = 2:-0.5:0b =21.510.50 c = rand(2,4) c =0.9501 0.6068 0.8913 0.45650.2311 0.4860 0.7621 0.0185 load my_data數(shù)值數(shù)組的輸入(續(xù))矩陣的元素可以是任何表達式,例如: w = -2.8w =-2.8000sqrt(-7)(3+5+6)*3/40 + 2.6458i10.5000可以通過利用圓括號()索引,來(或幾個)元素。繼續(xù)剛才的例子:矩陣中的某一個w = -2.8, .sqrt(-7), . (3+5+6)*3/4m(3,2)w(2,5)=3.523 w(2,5)w =-2.80000

21、023.0000= 230 +2.6458i10.50000000注意,b 的尺寸自動變大以容納新的元素,0。這里還有一個例子:定義的單元設(shè)為 x(3,2)=3.5x= 000003.52 - 20輸入數(shù)值數(shù)組(續(xù))使用其它表達式對矩陣元素賦值 num_array2 2002 The MathWorks, Inc./ 九州恒潤科技 w = -2.8, sqrt(-7), (3 5 6)*3/4w =-2.80 2.6458i10.5 m(3,2) = 3.5m =0 00 00 3.5 w(2,5) = 23w =-2.8 0 2.6458i 10.5 00000 0 23任何表達式都可以作為

22、矩陣元素輸入數(shù)值矩陣的合并 使用方括號可以把兩個矩陣合并起來。 這里,方括號實際上是數(shù)組的合并算子。在方括號中,空格或逗號用于分隔列, 而分號用于分隔行。 a=1a =132;3 4使用方括號 a=1 2;3 4cat_a=a,3*a,5*a,2*a;4*a;6*a24 cat_a=a,5*a, 6*a cat_a =2*a;3*a,4*a;133951524612102026484*a61812242 - 21481216合并數(shù)值數(shù)組-使用 將現(xiàn)有的矩陣像矩陣元素一樣結(jié)合行分隔符:分號(;)列分隔符:空格 / 豆號(,) num_cat 2002 The MathWorks, Inc./ 九

23、州恒潤科技矩陣必須是矩形方陣(結(jié)果矩陣) a=1 2;3 4a =12使用方括弧 34 cat_a=a, 2*a; 3*a, 4*a; 5*a, 6*a cat_a =12243468364*a9 125 106 1215 20 18 244812 16矩陣和數(shù)組運算以下是中使用的基本數(shù)算符(按運算優(yōu)先級順序列出)中經(jīng)常使用到的部分矩陣函數(shù)。矩陣求逆求矩陣的行列式求矩陣的秩求特征向量和特征值奇異值分解求矩陣/向量的范數(shù)inv()det()r()eig()svd()norm()矩陣和數(shù)組運算符分別執(zhí)行矩陣和數(shù)組數(shù)算。矩陣和數(shù)組看起來相同,關(guān)鍵在于兩者運算時操作規(guī)則不同。例如,進行矩陣乘法,使用星

24、號(*);若要進行數(shù)組乘法,連用點號和星號(.*)。后面將介紹兩種乘法的不同之處。2 - 22矩陣運算符數(shù)組運算符() 括弧置. 數(shù)組轉(zhuǎn)置 冪. 數(shù)組冪* 乘.* 數(shù)組乘/ 除./ 數(shù)組除+ 加- 減矩陣和數(shù)組運算符norm 求矩陣 / 向量的范數(shù)(按運算優(yōu)先級排序) help ops help matfun 2002 The MathWorks, Inc./ 九州恒潤科技常用矩陣inv det函數(shù)矩陣求逆求矩陣行列式r求矩陣的秩eig求矩陣的特征向量和特征值svd進行矩陣奇異值分解.矩陣運算符() 括號置數(shù)組運算符. 數(shù)組轉(zhuǎn)置冪. 數(shù)組冪*乘.* 數(shù)組乘/除./ 數(shù)組除加-減矩陣計算標量擴展

25、矩陣的和或差運算要求參與計算的兩個矩陣尺寸相同。不過,支持標量與任意維矩陣進行的加、減、乘、除運算。此功能稱為“標量擴展”。標量的維數(shù)將自動被擴展到與運算的矩陣同樣的大小。例如:w=12;34+5 w=12;34+5w=1255+標量擴展3455w=68792 - 23矩陣計算標量擴展 num_array3 2002 The MathWorks, Inc./ 九州恒潤科技 w=1 2;3 4 51 2=53 4標量擴展1 25 5=3 45 56 7=8 9 w=1 2;3 4 5w =6789矩陣乘法進行矩陣相乘時(*),遵循如下法則:數(shù)必須相等。結(jié)果矩陣的維數(shù)等于相乘矩陣最外側(cè)的維數(shù)結(jié)果矩

26、陣中的元素是第一個矩陣行與第二個矩陣相應(yīng)列的點積。a bc=1 2 3; 5 6 7;3,1;2,4;-1,2;a*ba=1 2 3;4 5 6;3,1;2,4;-1,2;a*bb=c =c=4161536mat_mult矩陣乘法回顧:若X =X11 X21 Y11 Y21X12 X22 Y12 Y22Y =則X11X12Y11Y12*X21X22Y21Y22X*Y=(X11*Y11)+(X12*Y21) (X21*Y11)+(X22*Y21)(X11*Y12)+(X12*Y22) (X21*Y12)+(X22*Y22)2 - 24矩陣相乘數(shù)必須相等結(jié)果矩陣的維數(shù)= 相乘矩陣的外維數(shù)結(jié)果元素=

27、 第一個矩陣行和第二個矩陣相應(yīng)列的點積 mat_mult 2002 The MathWorks, Inc./ 九州恒潤科技 a = 1 2 3;4 5 6;2x3 b = 3,1;2,4;-1,2;3x2 c = a*b2x3 3x22x2c =4 1516 36a(第二行).b(第二列)聯(lián)立方程組的求解最常遇到的一個線性代數(shù)問題是求解由若干線性方程聯(lián)立組成的方程組。使用非常方便的完成這個過程。示例提供的“”()運算符可以A = mn何時使用 Ax = Bx = n1():b = m1x=AB何時使用標準除(/):xA = B對于欠定的系統(tǒng)(mn):A=-1 1 2;3 -1 1;-1 3 4

28、;2;6;4;inv(A)*bx=B/A使用最小二乘回歸算法得出“曲線擬合”數(shù)值解;b x=如果得到的解是缺秩的,您將得到告警信息 (列向量相關(guān)) 解有可能不是唯一的。對于超定的系統(tǒng) (mx=Ab解按列選主元進行QR因式分解;不是唯一的。solve_ex1若A是方陣,則可以使用下式x A b xx =inv(A)*b; 或 x= Ab;-1 1 2;2;6;4;inv(A)*b3-11;-134;1.0000-1.00002.0000 x = Abx=1.0000-1.0000該例子的方程組。2.00002 - 25-x1 +x2 + 2x3 = 2 3x1 -x2 +x3 = 6-x1 +

29、3x2 + 4x3 = 4示例:求解方程-使用“”解聯(lián)立方程 solve_ex 1 2002 The MathWorks, Inc./ 九州恒潤科技 A = -1 1 2; 3 -1 1;-1 3 4; b = 2;6;4; x = inv(A)*b x =1.0000-1.00002.0000-x1 + x2 +2x3 = 23x1 - x2 +x3 = 6-x1 + 3x2 +4x3 = 4 x = Abx =1.0000-1.00002.0000數(shù)組乘法進行數(shù)組相乘時(.*),遵循如下法則:矩陣必須具有相同的維。結(jié)果矩陣的維數(shù)與參與運算的矩陣相同。結(jié)果矩陣的元素是相乘矩陣每一個相對應(yīng)元素

30、的積。若X11 X21X12 X22X =a=1 2 35 6 71:4;1:4;a.*b4;8;Y11 Y21Y12 Y22Y =b=則X.*Yc=X11*Y11 X21*Y21X12*Y12 X22*Y22=array_mult aa =12 34;567815=261:4;371:448 bb =11=223344 cc =a.*b154129211632同樣的規(guī)則適用于其它數(shù)組運算2 - 26數(shù)組乘法數(shù)組陣列必須有相同維數(shù)結(jié)果數(shù)組陣列維數(shù)= 相乘數(shù)組陣列的維數(shù)結(jié)果元素= 相乘陣列每組相對應(yīng)元素的積規(guī)則同樣適用于其它數(shù)組陣列運算 array_mult 2002 The MathWorks

31、, Inc./ 九州恒潤科技 a = 1 2 3 4; 5 6 7 8; b = 1:4; 1:4; c = a.*b c =149 165 12 21 32c(2,4) a(2,4) b(2,4)數(shù)組操作由于自身的特性,對大量數(shù)據(jù)的操作無需使用循環(huán)結(jié)構(gòu)就可以實現(xiàn)。如果現(xiàn)在有 1000 組某物的數(shù)據(jù),包括質(zhì)量(M), 長度(L), 寬度(W), 和高度(H) ,要計算密度(D)。array_ex使用其它高級語言實現(xiàn)計算時,可能需要這么做: for I = 1:1000D(I) = M(I)/(L(I)*W(I)*H(I);end;其實,在下可以只用一條語句,來一次從 1000個質(zhì)量、長度和高度

32、的數(shù)據(jù)計算出密度。 D = M./(L.*W.*H);使用數(shù)組操作比使用for 循環(huán)更具速度上的優(yōu)勢。優(yōu)勢源于此時無需反復(fù)調(diào)用語言解釋程序。每執(zhí)行一條語句,都必須調(diào)用語言解釋程序。運行帶有for循環(huán)的語句行時,將以循環(huán)次數(shù)調(diào)用解釋程序。循環(huán)次數(shù)越多,調(diào)用越頻繁。在編程的課程中,將向您介紹多種提高代碼執(zhí)行速度的方法。2 - 27數(shù)組運算多數(shù)語言- 循環(huán)結(jié)構(gòu):中 - 陣列運算: array_ex 2002 The MathWorks, Inc./ 九州恒潤科技 tic; Density = Mass./(Length.*Width.*Height); tocelapsed_time =矢量化代碼比

33、0循環(huán)結(jié)構(gòu)速度快 tic; for I = 1:10000Density(I) = Mass(I)/(Length(I)*Width(I)*Height(I); end; tocelapsed_time =用 TIC 和 TOC4.7260測量計算時間在中對矩陣索引在中有兩種方法可以對矩陣元素進行索引:使用(行、列)的形式使用絕對(單)下標索引列(n) 31245_matA =A(2,4)12A(17)行 (m)345行、列從矩陣的左上角開始索引,索引的初始值是1。要矩陣A中值為4的元素,可以在圓括號中以相應(yīng)的行、列指明。 A(2,4)絕對索引最初是用FORTRAN語言編寫的,F(xiàn)ORTRAN

34、語言中對數(shù)組數(shù)據(jù)的是縱向的。盡管的代碼現(xiàn)在已經(jīng)用C語言重寫了,這種性質(zhì)卻保存了下來。也就是說,對矩陣的絕對下標索引是按從上到下,從左到右的順序進行的,初始值是1。使用絕對下標法從A中提取4的做法如下: A(17)2 - 284 110 61 116 16221252211238 21.2 79 124 177.2 35 87 131 180 40.5 945562383130 201025中對矩陣元素的索引列(n)12345A (2,4)A (17)_mat 2002 The MathWorks, Inc./ 九州恒潤科技矩陣:標量: 1 1 陣列向量: m 1 陣列1 n 陣列矩陣: m n

35、 陣列A =12行 (m) 345410162 28 21.2 79 24 725 227.257111 20 40.5 94 45 956 242383130 210 2矩陣元素既可以是數(shù)值也可以是字符/數(shù)組的下標 索引通過兩種基本的方法對數(shù)組索引:(行,列) 索引絕對位置索引索引值本身必須是整數(shù),但被索引的對象可以是:單個元素一串連續(xù)的元素 (是用冒號運算符生成數(shù)列 min:step:max)任意組合的元素列表列 (n)_mat A(1, 7, 2;3, 6, 2)12345A =1A(1:5,5)A(:,5)A(21:25)2A(1:end,end)A(:,end)A(21:end)行

36、(m)34A(3,1) A(3)5A(4:5,2:3) A(9 14;10 15)結(jié)果所得的矩陣具有同被索引矩陣一樣的形式。以下命令有助于靈活的進行下標索引。find返回滿足給定條件的元素索引/下標的值(參見下一頁“Operators”)ind2sub將絕對位置索引下標轉(zhuǎn)化為按行、列進行的索引下標。將按行、列進行的索引下標轉(zhuǎn)化為絕對位置索引下標。sub2ind2 - 294 110 61 116 162218 21.2 79 124 1725227.2 35 87 131 1811230 40.5 945562383130 201025數(shù)組下標/索引12345A =12A(1:5,5) A(1

37、:end,end)3A(:,5)A(:,end)A(21:25) A(21:end)A(3,1) 4A(3)5A(4:5,2:3)A(9 14;10 15)_mat 2002 The MathWorks, Inc./ 九州恒潤科技用括號 () 指明索引冒號操作符 (:) 確定范圍 / 全部 通過索引下標創(chuàng)建矩陣end 確定最大的索引值410162 28 21.2 79 24 725 227.257111 20 40.5 94 45 956 242383130 210 2練習:索引該練習中,您將通過給定的5天行情。鍵入下面命令開始這一練習:數(shù)據(jù)分析loadstockperf以下是MYCK-MyH

38、igh 17.0816.5517.1717.0518.02s (NasdqNM)Close 15.2316.6616.5616.3817.07Date 02/22/0202/21/0202/20/0202/19/0202/15/02Open 17.0116.4317.0916.8617.15Low 15.0214.9815.4716.2517.05提示 使用Full Text Search 和 help查找有關(guān)最大值(um),均值(average)和排序(sort)的函數(shù)。查找每天開盤價的最大值。查找每天開盤價的平均值。查找每天最低股價的最大值。查找每天最低股價平均值。附加題:排序收盤價的值。

39、按照開盤價升序排列所有數(shù)據(jù)。2 - 30練習:索引裝載一些 load stockpref 可以得到一個名為stock_values的5x4矩陣。每行代表一天,列數(shù)據(jù)代表開盤時最低,最高價和收盤價格。用:提示: 找出最高開盤 價格 找出開盤 價格平均值 找出每天 最低成交價格的最大值 找出每天 最低成交價格的平均值附加: 排序5個收盤價格 按開盤價上升順序排序所有數(shù)據(jù) 2002 The MathWorks, Inc./ 九州恒潤科技使用 Full Text Search 和 HELP 查找與um, average 和 sort 有關(guān)的信息。解答: load stockperf索引% 從文件載入數(shù)

40、據(jù)。 whos% 查看workspace中的變量。 stock_values% 查看stock_values中的值。stock_soln openvals=stock_values(:,1)% 查找開盤價。 max_openvals=max(openvals)% 查找開盤價最大值。 mean_openvals=mean(openvals)% 得到開盤價平均值。low_vals=stock_values(:,3)%查找的較低值。2 - 31解答:索引 stock_soln 2002 The MathWorks, Inc./ 九州恒潤科技 load stockperf% 從文件導(dǎo)入。 whos%

41、查看 workspace 中的變量。 stock_values% 查看 stock_values 中的值。 openvals=stock_values(:,1)% 查找該支 的開盤價。 max_openvals=max(openvals)% 查找開盤價的最大值。 mean_openvals=mean(openvals)% 得到開盤價的平均值。解答:(續(xù))索引 max_lowvals=max(low_vals)% 查找最低股價的最大值。 mean_lowvals=mean(low_vals)% 查找最低股價的平均值。stock_soln% 附加題。% 排序最終值。 lastvals=stock_

42、values(:,end) sortvals=sort(lastvals)% 所有數(shù)據(jù)按開盤價升序排列。 stock_data_sort_open = sortrows(stock_values,2)2 - 32解答:索引(續(xù)) stock_soln 2002 The MathWorks, Inc./ 九州恒潤科技 low_vals=stock_values(:,3)% 找出 的最低值 max_lowvals=max(low_vals)% 找出最低 價格的最大值 mean_lowvals=mean(low_vals)% 找出最低 價格的平均值% 附加題% 對最終值的排序 lastvals=st

43、ock_values(:,end) sortvals=sort(lastvals)% 按開盤價格升序方式排序所有數(shù)據(jù) stock_data_sort_open = sortrows(stock_values,2)數(shù)組中的的數(shù)組。數(shù)組 A = pascal(4); A(:,:,2) =(4)A(:,:,1) =1112第N頁數(shù)組只是含有兩位以上下標13141000010000100001A(:,:,2) =00000第1頁81210011 1974 1461512 3 4 A(:,:,9) = diag(ones(1,4);一個三維的數(shù)組可以是代表三維的物理數(shù)據(jù),例如屋子里逐點采樣得到的的溫度分

44、布,或 者,它可能代表一個矩陣序列A(k),或是與時間相關(guān)的矩陣采樣數(shù)據(jù) A(t)。 mult_dim 2002 The MathWorks, Inc./ 九州恒潤科技以下,kth 型或tth 型矩陣中位于第k個矩陣中的(i,j)個元素表達為A(i,j,k)。 A=pascal(4); A(:,:,2) = (4) A(:,:,9) =要從命令行生成一個結(jié)構(gòu)較為簡單的3維數(shù)組,請見以下實例,假設(shè)矩陣是 3X3 的。diag(ones(1,4); A = 5 7 8; 0 1 9; 4 3 6mult_dim可以這樣生成另一個維,或稱為“頁”, A(:,:,2) = 1 0 4; 3 5 6;

45、9 8 7如同二維矩陣一樣,當元素增加時,數(shù)組的尺寸隨之擴大,其中尚未指定的元素被賦以數(shù)值 0,以保證矩陣的完整性。例如: A(:,:,4) = 1 2 3; 4 5 6; 7 8 9使用類似的索引和賦值方式可以將數(shù)組擴展為維。 A(:,:,4,32,5,4,8,3) = ones(3,3)2 - 33數(shù)據(jù)類型目前為止,在使用缺省的數(shù)據(jù)類型,雙精度數(shù)組。下面介紹其它幾種數(shù)據(jù)類型,邏輯數(shù)組,元胞數(shù)組,結(jié)構(gòu)和字符數(shù)組;并用例子加以說明。同樣地,也可以通過以下關(guān)數(shù)據(jù)類型的參考信息。命令查找有help da helpwinypeshelp daypes ypesdaypesdocdadocdaypes

46、2 - 34數(shù)據(jù)類型數(shù)據(jù)類型雙精度數(shù)組邏輯數(shù)組元胞數(shù)組結(jié)構(gòu) (結(jié)構(gòu)數(shù)組)字符串數(shù)組數(shù)值數(shù)組可以是實型或復(fù)型,滿陣或稀疏矩陣。 help da ypes doc da ypes 2002 The MathWorks, Inc./ 九州恒潤科技邏輯運算邏輯運算是用來測試給定條件是否成立的函數(shù)。如果TRUE如果FALSE返回 邏輯真值“1”返回 邏輯假值“0”例如,當 a =15/8: a ans =1在1;helpops中,邏輯運算可以對整個矩陣進試每個矩陣的元素是否符合某個條件。邏輯運算的結(jié)果保存為一個邏輯邏輯數(shù)組(logical array) 僅由假“0”和真“1”組成。邏輯運算= help

47、ops 2002 The MathWorks, Inc./ 九州恒潤科技1 TRUE0 FALSE 大于 a 1;ans =1上面的結(jié)果 1 被賦值給變量 ans,它具有邏輯數(shù)組(logical array)的數(shù)據(jù)類型。使用邏輯運算符時,返回的 0 和 1 都具有邏輯數(shù)組(logical arrays)的數(shù)據(jù)類型。這些邏輯數(shù)組可用于進行邏輯索引。 Mass =-2 10 .NaN 30 -11 Inf 31; each_ all_=Mass=0= .邏輯索引可使您把數(shù)據(jù)中不符合一定標準的值提取出來。下面是一個使用邏輯索引的例子。all(Mass=0)_fin = .(Mass=0) & . (

48、isfinite(Mass)下面的例子中,將測試變量 Mass中數(shù)據(jù)是否合理。對每個元素進試,看它是否: good_mass = .每個都是正值(大于等于 0)- 返回的邏輯數(shù)組與 Mass 尺寸相同都大于0(所有值大于等于 0 )- 返回標量每個都大于0且為有限值 -返回的邏輯數(shù)組與 Mass 尺寸相同要得到這些值,可以使用返回的邏輯向量進行索引。Mass(_fin)bool_ops Mass = -210 NaN 30 -11 Inf 31;Mass=0 each_ each_0 all_= 101011=all(Mass=0)all_=0_fin=(Mass=0)&(isfinite(M

49、ass)_fin = 01010_fin)01 good_mass good_mass = Mass(103031參考:UsingPages: 17-27 - 17-312 - 36邏輯索引 Mass = -2 10 NaN 30 -11 Inf 31; each_ = Mass=0 each_ =0101011 all_ = all(Mass=0) all_ =0 _fin = (Mass=0)&(isfinite(Mass)_fin =0101001 good_mass = Mass( _fin) good_mass =10 30 311 TRUE0 FALSE bool_ops 2002

50、 The MathWorks, Inc./ 九州恒潤科技Operatorsequal to greater nload stockperf stock_data2 - 37練習:查找數(shù)據(jù)以練習中的數(shù)據(jù)為例,查找表中所有數(shù)值在17和18之間的數(shù)據(jù)。數(shù)據(jù): load stockperf stock_values用邏輯邏輯判斷 stock_values 中哪個元素落在17和18之間。 2002 The MathWorks, Inc./ 九州恒潤科技解答:查找數(shù)據(jù)vals_in_range= (stock_values17&stock_valuesnum_vals=stock_values(vals_

51、in_range)%使用邏輯數(shù)組索引列表。stock_values,得到具體數(shù)值2 - 38解答:查找數(shù)據(jù) bool_soln 2002 The MathWorks, Inc./ 九州恒潤科技 vals_in_range = (stock_values17 & stock_values num_vals=stock_values(vals_in_range)% 用邏輯數(shù)組索引 stock_values 得到具體的數(shù)值% 列表。元胞數(shù)組中的元胞數(shù)組(Cell array)可以認為是個無所不包的通用型矩陣。與其它矩陣相比較,其空間是動態(tài)分配的。元胞數(shù)組的每個單元可以具有任意數(shù)據(jù)類型維數(shù)和尺寸:字符

52、串,雙精度數(shù),稀疏矩陣,元胞數(shù)組,結(jié)構(gòu)或其它數(shù)據(jù)類型標量/向量/2-維/N-維元胞數(shù)組使用花括號創(chuàng)建: cell_name=data;或 cell_namerow,col=data;如果向不存在的單元賦值,將擴展元胞數(shù)組的尺寸。2 - 39元胞數(shù)組( Cell Arrays)元胞數(shù)組( cell array )是個廣義的矩陣每一個元素( elements)可以是不同類型,維度和尺寸的數(shù)據(jù) 字符串,雙精度數(shù),稀疏矩陣,元胞數(shù)組,結(jié)構(gòu)或其它數(shù)據(jù)類型 標量/向量/2維/N維語法:注意: 花括號 動態(tài)分配的空間 如果向不存在的單元賦值,將相應(yīng)擴展元胞數(shù)組的維度 2002 The MathWorks,

53、Inc./ 九州恒潤科技 cell_namerow,col = data;元胞數(shù)組(續(xù))使用cell函數(shù)可以創(chuàng)建一個空的元胞數(shù)組。元胞數(shù)組更經(jīng)常是用花括號括起一定內(nèi)容來創(chuàng)建。用花括號括起下標可用來對元胞的內(nèi)容進行索引。下面例子中對一個 1X3 元胞數(shù)組賦值。3 個元胞 分別包含一個 2X2X2 隨機數(shù)矩陣,字符串用。o和標量數(shù) 17.35。該例中,花括號在賦值號右側(cè)使 A = rand(2,2,2), A =o, 17.352x2x2 doubleo17.3500使用這種顯示方法是因為第一個元胞的內(nèi)容太多,無法直接顯示,其余兩個較小,直接顯示。也可以在賦值號左側(cè)使用花括號索引元胞數(shù)組中的一個單

54、元。 B1,1 B2,2 B =1x10 = 1:10;= Adouble1x3 cell這里有兩點非常重要。首先,如果要得到元胞的內(nèi)容,必須使用花括號加下標的形式索引。對元胞內(nèi)容的進一步索引可以通過使用元胞內(nèi)數(shù)據(jù)相應(yīng)的索引方式進行。 B1,1ans =1 2 3 4 5 6 7 8 9 10 A1,1(2,:,1)ans =0.23110.4860第二,元胞數(shù)組包含的其它數(shù)組的拷貝,并不是指向那些數(shù)組的指針。如果以后對A修改,B不會發(fā)生任何變化。2 - 40元胞數(shù)組(續(xù))不同尺寸和類型擴展元胞 數(shù)組的尺寸整個單元單元內(nèi)的元素 cell_create 2002 The MathWorks, I

55、nc./ 九州恒潤科技 A = rand(2,2,2), o, 17.35 %Bra on RHS A =2x2x2 double o 17.3500 B1,1 = 1:10; %Bra on LHS B2,2 = A B =1x10 double1x3 cell B1,1ans =1 2 3 4 5 6 7 8 9 10 A1,1(2,:,1)ans =0.2311 0.4860結(jié)構(gòu)結(jié)構(gòu)(Structure)是一種帶有稱為字段(field)名“數(shù)據(jù)容器”的數(shù)據(jù)類型。一個結(jié)構(gòu)由多個組成。結(jié)構(gòu)中的字段可以包容任何類型的數(shù)據(jù),為把相關(guān)卻又類型不同的數(shù)據(jù)組織起來提供了方便的途徑。例如,可以將一個字符

56、串,一個變量和一個矩陣組織成一個結(jié)構(gòu)變量??梢允褂孟铝姓Z法創(chuàng)建一個結(jié)構(gòu)。 structure_name(record_num).field_name = data就象標準的數(shù)值數(shù)據(jù)一樣,結(jié)構(gòu)也是源于數(shù)組。一個單獨的結(jié)構(gòu)是1X1的結(jié)構(gòu)數(shù)組,就象4是個1X1的數(shù)值數(shù)組一樣。結(jié)構(gòu)數(shù)組可以具有任意合法的尺寸或形式,包括結(jié)構(gòu)數(shù)組。空間動態(tài)分配。如果向一個不存在的字段賦值,將在結(jié)構(gòu)中開辟新的字段。2 - 41結(jié)構(gòu)( Structure)結(jié)構(gòu)( structure )由一系列組成(Record)將數(shù)據(jù)在字段中(命名過的容器)字段( field )中可以存放任何類型的數(shù)據(jù): 字符串,雙精度數(shù),稀疏矩陣,元胞數(shù)

57、組,結(jié)構(gòu)或其它數(shù)據(jù)類型 標量/向量/2維/N維語法:動態(tài)分配的空間 如果向不存在的單元賦值,將相應(yīng)擴展結(jié)構(gòu)的尺寸 2002 The MathWorks, Inc./ 九州恒潤科技 structure_name(record_num).field_name = data;結(jié)構(gòu):創(chuàng)建和索引通過向 structure_name.field_name 賦值創(chuàng)建結(jié)構(gòu)。Students.Name Students.Grades Students(2).Name Students(2).Grades=Mary;97 93;Joe;94 96;struct_create struct_index也可以使用st

58、ruct命令創(chuàng)建結(jié)構(gòu)。Students=struct(Name,Mary,Joe,Grades,97 93,94 96);.要結(jié)構(gòu)中的一個的整個字段:Students(1).Nameans = Mary同樣可以對字段中的數(shù)據(jù)進行索引: Exam1 Exam1 =94=Students(2).Grades(1,1)2 - 42結(jié)構(gòu)的格式變量名字段 1字段 2結(jié)構(gòu):創(chuàng)建和索引 Students=struct(Name,Mary,Joe,Grades,97 93,94 96);元胞數(shù)組整個字段 字段中的數(shù)據(jù) struct_create struct_index 2002 The MathWorks,

59、 Inc./ 九州恒潤科技 Students(1).Name ans =Mary Exam1 = Students(2).Grades(1,1) Exam1 =94 Students.Name= Mary; Students.Grades = 97 93; Students(2).Name = Joe; Students(2).Grades = 94 96;結(jié)構(gòu)形式變量名字段 1字段 2從多個中提取數(shù)據(jù)結(jié)構(gòu)和元胞數(shù)組可以包含不同類型和尺寸的數(shù)據(jù),這使它們比較難于定義一種提取數(shù)據(jù)的方法。不過,由于相關(guān)的數(shù)據(jù)具有一定的形式(所有單元的類型和尺寸相同),提取結(jié)構(gòu)的一部分仍舊是可能的。下面是兩個使用適

60、當拼接函數(shù)實現(xiàn)的數(shù)據(jù)提取。兩個例子都使用前面建立的Students結(jié)構(gòu)。Students(:).Name= Students.Namestruct_multi上面的例子中,= 符號兩側(cè)的語法形式返回值相同。它們都返回 Students結(jié)構(gòu),Name中的內(nèi)容。未對提取的數(shù)據(jù)進行賦值,結(jié)果保存在變量 ans 中。但是,只有最后一個名字保存在了變量 ans中。前一個名字保存在缺省變量ans中,但馬上被后面的名字所覆蓋。當從結(jié)構(gòu)中提取數(shù)據(jù)時,應(yīng)避免使用缺省變量 ans,以防數(shù)據(jù)丟失。參看下面的例子,如何對從結(jié)構(gòu)提取出來的數(shù)據(jù)進行賦值。提取字符串數(shù)組(使用 strvcat) names = strvca

溫馨提示

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

評論

0/150

提交評論