Matlab入門教程(20201128165436)_第1頁
Matlab入門教程(20201128165436)_第2頁
Matlab入門教程(20201128165436)_第3頁
Matlab入門教程(20201128165436)_第4頁
Matlab入門教程(20201128165436)_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第1章 MATLAB操作基礎(chǔ) 1.1 MATLAB 概述 1.1.2 MATLAB的主要功能 1 數(shù)值計(jì)算 MATLAB以矩陣作為數(shù)據(jù)操作的基本單位,還提供了十分豐富的數(shù)值計(jì)算函數(shù) 2繪圖功能 可以繪制二維、三維圖形,還可以繪制特殊圖形(與統(tǒng)計(jì)有關(guān)的圖,例如:區(qū) 域圖、直方圖、餅圖、柱狀圖等) 。 3編程語言 MATLAB具有程序結(jié)構(gòu)控制、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)、輸入輸出、面向?qū)ο蟮瘸绦?語言特征,而且簡單易學(xué)、編程效率高。 4. MATLAB工具箱 MATLAB包含兩部分內(nèi)容:基本部分和各種可選的工具箱。 MATLAB工具箱分為兩大類:功能性工具箱和學(xué)科性工具箱。 1.1.3MATLAB語言的特

2、點(diǎn) ? 語言簡潔緊湊,使用方便靈活,易學(xué)易用。 例如:A=1 2 3;4 5 6;7 8 9一條語句實(shí)現(xiàn)了對3x3矩陣的輸入。 ? 語句功能強(qiáng)大,一條語句相當(dāng)于其它語言的一個(gè)子程序,例如 fft 。 ? 語句簡單,內(nèi)涵豐富。同一個(gè)函數(shù)有不同的輸入變量和輸出變量,分別 代表不同的含義。 ? Matlab 既具有結(jié)構(gòu)化的控制語句( 序設(shè)計(jì)。 ? 方便的繪圖功能。 ? 包含功能強(qiáng)勁的工具箱。 ? 易于擴(kuò)展。 1.1.4 初識(shí) MATLAB 例 1-1 繪制正弦曲線和余弦曲線。 x=0:0.5:360*pi/ 180; plot(x,sin(x),x,cos(x); 例 1-2 求方程 3x4+7x3

3、 +9x2-23=0 的 全部根。 p=3,7,9,0,-23;%建立多項(xiàng)式 系數(shù)向量 1.2 MATLAB的運(yùn)行環(huán)境與安裝 1.2.1 MATLAB的運(yùn)行環(huán)境 硬件環(huán)境: (1) CPU (2) 內(nèi)存 (3) 硬盤 1.2.2 MATLAB 的安裝 if、 for、 while )又支持面向?qū)ο蟮某?x=roots(p)%求根 例 1-3 求積分 quad(x.*log(1+x),0,1) 例 1-4 求解線性方程組。 a=2,-3,1;8,3,2;45,1,-9; b=4;2;17; x=inv(a)*b CD-RO M驅(qū)動(dòng)器和鼠標(biāo) 軟件環(huán)境: (1) Windows 98/NT/2000

4、 或 Windows XP (2) 其他軟件根據(jù)需要選用 運(yùn)行系統(tǒng)的安裝程序setup.exe,可以按照安裝提示依次操作。 1.3 MATLAB集成環(huán)境 1.3.1 啟動(dòng)與退出MATLAB集成環(huán)境 1. MATLAB系統(tǒng)的啟動(dòng) 與一般的Windows程序一樣,啟動(dòng)MATLAB系統(tǒng)有3種常見方法: 使用Windows開始”菜單。 運(yùn)行MATLAB系統(tǒng)啟動(dòng)程序matlab.exe。 (3) 利用快捷方式。 I工作空閘 歷史命令 命令時(shí)I 當(dāng)MATLAB安裝完畢并首次啟動(dòng)時(shí),展現(xiàn)在屏幕上的界面為MATLAB的默認(rèn)界 面,如上圖所示。 2. MATLAB系統(tǒng)的退出 要退出MATLAB系統(tǒng),也有3種常見

5、方法: (1) 在MATLAB主窗口 File菜單中選擇 Exit MATLAB命令。 在MATLAB命令窗口輸入 Exit或Quit命令。 單擊MATLAB主窗口的“關(guān)閉”按鈕 1.3.2 主窗口 MATLAB主窗口是MATLAB的主要工作界面。主窗口除了嵌入一些子窗口外, 還 主要包括菜單欄和工具欄。 1. 菜單欄 在 MATLAB 6.5 主窗口的菜單欄,共包含 File、Edit、View、Web、Window 和 Help 6個(gè)菜單項(xiàng)。 (1) File菜單項(xiàng):File菜單項(xiàng)實(shí)現(xiàn)有關(guān)文件的操作。 Edit菜單項(xiàng):Edit菜單項(xiàng)用于命令窗口的編輯操作。 (3) View菜單項(xiàng):View

6、菜單項(xiàng)用于設(shè)置 MATLAB集成環(huán)境的顯示方式。 (4) Web菜單項(xiàng):Web菜單項(xiàng)用于設(shè)置 MATLAB的 Web操作。 (5) Window菜單項(xiàng):主窗口菜單欄上的 Window菜單,只包含一個(gè)子菜單 Close all,用于關(guān)閉所有打開的編輯器窗口,包括 M-file、Figure、Model和GUI窗口。 (6) Help菜單項(xiàng):Help菜單項(xiàng)用于提供幫助信息。 1.3.3命令窗口 命令窗口是MATLAB的主要交互窗口,用于輸入命令并顯示除圖形以外的所有 執(zhí)行結(jié)果。 MATLAB 命令窗口中的“ ”為命令提示符,表示 MATLAB 正在處于準(zhǔn)備狀態(tài)。 在命令提示符后鍵入命令并按下回車鍵

7、后, MATLAB 就會(huì)解釋執(zhí)行所輸入的命 令,并在命令后面給出計(jì)算結(jié)果。 一般來說,一個(gè)命令行輸入一條命令,命令行以回車結(jié)束。但一個(gè)命令行也可 以輸入若干條命令,各命令之間以逗號分隔,若前一命令后帶有分號,則逗號 可以省略。例如 xx=5,yy=3 xx=5;yy=3 多行命令()-續(xù)行符 如果命令語句超過一行或者太長希望分行輸入,則可以使用多行命令繼續(xù) 輸入。 S=1-12+13+4+ 9-4-18; 3 個(gè)小黑點(diǎn)稱為續(xù)行符,即把下面的物理行看作該行的續(xù)行。 1.3.4 工作空間窗口 工作空間是MATLAB用于存儲(chǔ)各種變量和結(jié)果的內(nèi)存空間。在該窗 口中顯示工作空間中所有變量的名稱、大小、字

8、節(jié)數(shù)和變量類型說明,可對變 量進(jìn)行觀察、編輯、保存和刪除。 1.3.5 當(dāng)前目錄窗口和搜索路徑 1 當(dāng)前目錄窗口 當(dāng)前目錄是指 MATLAB 運(yùn)行文件時(shí)的工作目錄,只有在當(dāng)前目錄或搜索路徑下 的文件、函數(shù)可以被運(yùn)行或調(diào)用。 在當(dāng)前目錄窗口中可以顯示或改變當(dāng)前目錄,還可以顯示當(dāng)前目錄下的文件 并提供搜索功能。將用戶目錄設(shè)置成當(dāng)前目錄也可使用 cd 命令。例如,將用戶 目錄 c:mydir 設(shè)置為當(dāng)前目錄,可在命令窗口輸入命令:cd c:mydir 2. MATLAB的搜索路徑 在MATLAB命令窗口輸入一條命令后,MATLAB按照一定次序?qū)ふ蚁嚓P(guān)的文 件。基本的搜索過程是: (1) 檢查該命令是

9、不是一個(gè)變量。 (2) 檢查該命令是不是一個(gè)內(nèi)部函數(shù)。 (3) 檢查該命令是否當(dāng)前目錄下的 M 文件。 (4) 檢查該命令是否MATLAB搜索路徑中其他目錄下的 M文件。 1.3.6 命令歷史記錄窗口 在默認(rèn)設(shè)置下,歷史記錄窗口中會(huì)自動(dòng)保留自安裝起所有用過的命 令的歷史記錄,并且還標(biāo)明了使用時(shí)間,從而方便用戶查詢。而且,通過雙擊 命令可進(jìn)行歷史命令的再運(yùn)行。如果要清除這些歷史記錄,可以選擇 Edit 菜單 中的 Clear Command History 命令。 1.3.7 啟動(dòng)平臺(tái)窗口和 Start 按鈕 MATLAB 6.5 的啟動(dòng)平臺(tái)窗口可以幫助用戶方便地打開和調(diào)用 MATLAB的各種程

10、序、函數(shù)和幫助文件。 MATLAB 6.5主窗口左下角還有一個(gè) Start 按鈕,單擊該按鈕會(huì)彈出一個(gè) 菜單,選擇其中的命令可以執(zhí)行 MATLAB產(chǎn)品的各種工具,并且可以查閱MATLAB 包含的各種資源。 1.4 MATLAB幫助系統(tǒng) 1.4.1 幫助窗口 進(jìn)入幫助窗口可以通過以下 3 種方法: (1)單擊MATLAB主窗口工具欄中的Help按鈕。 在命令窗口中輸入 helpwin、helpdesk或doc。 選擇Help菜單中的“ MATLAB Help”選項(xiàng)。 1.4.2 幫助命令 MATLAB幫助命令包括help、lookfor以及模糊查詢。 1 help 命令 (1)直接輸入help命

11、令將會(huì)顯示當(dāng)前幫助系統(tǒng)中所包含的所有項(xiàng)目; (2)help 加函數(shù)名來顯示該函數(shù)的幫助說明。 2lookfor 命令 help 命令只搜索出那些關(guān)鍵字完全匹配的結(jié)果, lookfor 命令對搜索范圍內(nèi)的 M 文件進(jìn)行關(guān)鍵字搜索,條件比較寬松。 lookfor 命令只對 M 文件的第一行進(jìn)行關(guān)鍵字搜索。 若在 lookfor 命令加上 -all 選 項(xiàng),則可對 M 文件進(jìn)行全文搜索。 3模糊查詢 MATLAB 6.0以上的版本提供了一種類似模糊查詢的命令查詢方法,用戶只需 要輸入命令的前幾個(gè)字母,然后按Tab鍵,系統(tǒng)就會(huì)列出所有以這幾個(gè)字母開頭 的命令。 1.4.3 演示系統(tǒng) 在幫助窗口中選擇演

12、示系統(tǒng)(Demos)選項(xiàng)卡,然后在其中選擇相應(yīng)的演示模 塊,或者在命令窗口輸入 Demos,或者選擇主窗口 Help菜單中的Demos子菜單, 打開演示系統(tǒng)。 第 2 章 Matlab 及其應(yīng)用 2.1、MATLAB的基本矩陣運(yùn)算 2.1.1 簡單矩陣輸入 1 、命令行簡單鍵盤輸入 用于很少數(shù)據(jù)輸入 矩陣的方向: , ; NaN Inf 2、文件形式輸入 文本文件:從文本文件中讀入數(shù)據(jù) mat 文件: matlab 自有的數(shù)據(jù)格式 2.1.2 語句生成矩陣 1 、線性等間距格式矩陣 (1)X=起始值:增加值:結(jié)束值 (2)linspace 命令 a=linspace(1,10,5); (3)l

13、ogspace 命令 b=logspace(0,2,10) 2、矩陣連接 c=a b; 生成矩陣的函數(shù) zeros ones eye randn 2.1.3 矩陣運(yùn)算 乘方運(yùn)算符最咼 1、矩陣的運(yùn)算符 + :加法 :減法 *:乘法;點(diǎn)乘:.* /:右除;右除:./ :左除;左除:. A :乘方 2、矩陣的轉(zhuǎn)置等運(yùn)算 共軛轉(zhuǎn)置;轉(zhuǎn)置 inv:矩陣求逆 det :求行列式值 eig:求特征值與特征向量 運(yùn)算規(guī)則:從左到右;先乘除后加減; a / b (除法);a b (左除法) ba 對矩陣:Ax b 1 x A b Inv(A)*b; x A b (1) 兩矩陣加減,前提是維數(shù)相同,進(jìn)行加減運(yùn)算

14、時(shí),對應(yīng)的元素進(jìn)行加減; (2) 矩陣與標(biāo)量加減,用矩陣中的每個(gè)元素都與標(biāo)量進(jìn)行加減運(yùn)算; (3) 兩矩陣相乘,前提是前一矩陣的列等于后一矩陣的行,與數(shù)學(xué)約定一樣; (4) 矩陣與標(biāo)量相乘,用矩陣中的每個(gè)元素都與標(biāo)量進(jìn)行相乘; (5) 矩陣中的元素對元素的相乘:.* 矩陣中的元素對元素的相除:./. z=x4y x,y 均為向量:z(i)=x(i) Ay(i) x為向量,y為標(biāo)量:z(i)=x(i) Ay x為標(biāo)量,y為向量:z(i)=xAy(i) 2.1.4矩陣的超越函數(shù) 函數(shù) 名 含義 abs 絕對值或者復(fù)數(shù) 模 sqrt 平方根 real 實(shí)部 imag 虛部 conj 復(fù)數(shù)共軛 rou

15、nd 4舍5入到整數(shù) fix 舍入到最接近0的 整數(shù) floor 舍入到最接近S 的整數(shù) ceil 舍入到最接近的 整數(shù) 函數(shù) 名 含義 sign 符號函數(shù) rem 留數(shù) sin 正弦 cos 余弦 tan 正切 asi n 反正弦 acos 反余弦 ata n 反正切 ata n2 第四象限反正切 函數(shù) 名 含義 si nh 雙曲正弦 cosh 雙曲余弦 tanh 雙曲正切 exp 自然指數(shù) 2.2關(guān)系和邏輯運(yùn)算 log 自然對數(shù) log10 以10為底的對數(shù) 1、關(guān)系操作符 MATLAB常用的關(guān)系操作符有: (小于)、(大于)、=(大于或等于)、 =(等于)、=(不等于)。 (2) MAT

16、LAB的關(guān)系操作符可以用來比較兩個(gè)大小相同的數(shù)組,或者比較一個(gè)數(shù)組 和一個(gè)標(biāo)量。在與標(biāo)量比較時(shí),結(jié)果和數(shù)組大小一樣。 (3) 如果滿足指定的關(guān)系,返回1,否則返回0。 ?a=1:9; b=a4 b =000011111 ?c=a(a4) c =56789 2、邏輯操作符 (1) 邏輯操作符定義了一種與或非的關(guān)系表達(dá)式。 MATLAB的邏輯操作符有 4 5 6; 7 8 9; B(2,: )= B=1 2 3 2、為了提取矩陣a的第n行、第m列的元素值,使用a(n,m)可以得到。同樣, 將矩陣a的第n行、第m列的元素值賦為r,使用a(n,m)=r這樣的命令。 注意:在提取矩陣值時(shí),行或列的值大于

17、矩陣的大小,則出錯(cuò);在給矩 陣賦值時(shí),如果行或者列超出矩陣的大小,貝U MATLAB自動(dòng)擴(kuò)充矩陣的規(guī)模, 使得可以賦值,擴(kuò)充部分以零填充。 3、利用矩陣下標(biāo),MATLAB還提供了子矩陣功能。同樣是上面的a(n,m),如果n 和m是向量,而不是標(biāo)量,則將獲得指定矩陣的子塊 . 4、 同樣,矩陣的子塊還可以被賦值。如果在取子塊時(shí),n或m是“:,”則返回指 定的所有行或列 5、矩陣的序號編址:按列計(jì)數(shù)。 2.3.2矩陣大小 1、在MATLAB命令行中,使用 2、為了獲得矩陣或者向量的大小 len gth。 3、size按照下面的形式使用: 只有一個(gè)輸出變量時(shí),size返回一個(gè)行向量,第一個(gè)數(shù)為行數(shù),

18、第二個(gè)數(shù)為列數(shù); 如果有兩個(gè)輸出變量,第一個(gè)返回量為行數(shù),第二個(gè)返回?cái)?shù)為列數(shù)。(2)當(dāng)使 用x時(shí):x=1返回行數(shù),x=2返回列數(shù),這時(shí)只有一個(gè)返回值。 4、length返回行數(shù)或者列數(shù)的最大值,即length(a)=max(size(a)。 2.3.3矩陣操作函數(shù) MATLAB提供了一組執(zhí)行矩陣操作的函數(shù),例如:flipud(a)使得矩陣上下翻轉(zhuǎn), fliplr(a)使得矩陣左右翻轉(zhuǎn) 2.3.4矩陣查找和排序 1、子矩陣的查找使用find命令完成,它返回關(guān)系表達(dá)式為真的下標(biāo)。例如: ?a=10:20; ?fin d(a15) ans = 7891011 2、矩陣的排序使用sort函數(shù),它將矩陣

19、按照升序排列 2.4時(shí)間和日期 1、日歷函數(shù):calendar 2、時(shí)間函數(shù):clock 3、查看 CPU 時(shí)間:cputime 4、日期函數(shù):date 5、秒表定時(shí): tic toc 2.5退出和保存工作空間: 1、 save:工作空間中的所有變量保存在磁盤上名為matlab.mat的文件中。 2、save文件名變量名 將指定的變量保存在指定的文件中。 如:save temp x y z 把x y z這3個(gè)變量保存在文件temp.mat中。 3、下次加載MATLAB時(shí),可以利用load命令將保存在文件中的變量恢復(fù)到工作 空間中,其格式為: (1)load將保存在 matlab.mat中的變量

20、裝入到 matlab空間中。 (2) load 文件名變量名從指定文件中將指定的變量裝入到 matlab的工作空 間中。如:load temp x從文件temp.mat中只將變量x裝入到 matlab的工作 空間中。 2.6 Matlab的變量 1、基本運(yùn)算 變量 逗號、分號的意義 行內(nèi)編輯、注釋、運(yùn)算規(guī)則 2、變量要求 變量區(qū)分字母的大小寫 名字不能超過31個(gè)字符 變量必須以字母開頭,之后可以是任意字母、數(shù)字或者下劃線 變量中不能含有標(biāo)點(diǎn)符號 2.6.1 特殊變量 特殊變顯 取值 用于結(jié)果的缺省變量名 pi 圓周率 ep? 計(jì)算機(jī)的最小數(shù) inf 無窮大如10 nrui 不等量如0 0 i

21、J 函數(shù)的輸入變量數(shù)目 nargout 函數(shù)的輸出變量數(shù)目 realmui 最小的可用正實(shí)數(shù) reahnax 最大的可用正實(shí)數(shù) 2.6.2復(fù)數(shù) 不需要特殊的處理,可以直接進(jìn)行。 復(fù)數(shù)可以表示為:a=10-9i 2.6.3 MATLAB數(shù)據(jù)類型: 雙精度型、字符型、稀疏型、單元型、結(jié)構(gòu)型、8位型 最常使用的是雙精度型和字符型;稀疏型用于稀疏矩陣;單元型和結(jié)構(gòu)型用于 編寫大型軟件;8位型(6.0以上版本:16位型、32位型)用于圖象處理。 1、雙精度型(double): 在缺省情況下,當(dāng)結(jié)果為整數(shù),作為整數(shù)顯示;當(dāng)結(jié)果為實(shí)數(shù),以小數(shù)后4 位的精度近似顯示。 如果結(jié)果中的有效數(shù)字超出了這一范圍,以科

22、學(xué)計(jì)數(shù)法顯示結(jié)果。 2、字符型 (char): a=sss;bbb a =sss bbb (1)字符數(shù)組的定義:字符數(shù)組就是字符串,字符串中的每一個(gè)字符在系統(tǒng)內(nèi) 部都相應(yīng)地表示一個(gè)數(shù)值。 a=You are welcome! a =You are welcome! size(a) ans = 1 16 相關(guān)函數(shù) A、函數(shù)disp用來顯示字符串:disp(Hello)Hello B、 判斷一個(gè)變量是否為字符型數(shù)組,可以用函數(shù)class或ischar。 x=class(a) y=ischar(a) x =char y = 1 (2) 字符與數(shù)值的相互轉(zhuǎn)換: double :將一個(gè)字符串轉(zhuǎn)換為一個(gè)數(shù)

23、值 char:將數(shù)值轉(zhuǎn)換為字符串 s=Good morning! s1=double(s) s2=char(s1) s =Good morning! 105 s1 =7111111110032109111114110 110 103 33 s2 =Good morning! (3) 字符串的比較 A、strcmp :判別兩個(gè)字符串是否相等 B、strncmp :判別兩個(gè)字符串的前n個(gè)字符是否相等 s1=glisten;s2=glitter; a1=strcmp(s1,s2) a2=strncmp(s1,s2,3) a1 =0 a2 =1 (4) 二維字符數(shù)組: 創(chuàng)建二維字符數(shù)組時(shí),每行的長度要

24、相等。如果字符串長度不等,可以用空 格充填較短的字符串。 例如: s=abc ;defg s = abc defg 用 char 函數(shù)創(chuàng)建二維字符數(shù)組比較方便。當(dāng)字符串長度不等時(shí), char 函數(shù) 可以自動(dòng)地在較短的字符中加上一定數(shù)量的尾部空格,使其與最長字符串的長 度相等。 例如: y=char(abc,defg,abcde) z1=length(y) z2=size(y) y =abc defg abcde z1 =5 z2 =35 3、稀疏型(sparse)含有大量0的矩陣,稱為矩陣。只存儲(chǔ)矩陣中的非 0元素 speye(4) 生成單位稀疏矩陣 ans = (1,1) 1 (2,2) 1

25、 (3,3) 1 (4,4) 1 4、單元型(cell):把不同類型的數(shù)據(jù)存儲(chǔ)在一起的數(shù)組稱為單元數(shù)組。單元數(shù)組中 的每個(gè)元素是其他任意一種數(shù)據(jù)類型,通常可以將相關(guān)的尺寸大小不同的數(shù)據(jù) 組合在一起。 a=1,good,1 2 3 a =1 good 1x3 double (1) 創(chuàng)建單元數(shù)組: cell c=cell(n):生成一個(gè)n*n維的空數(shù)組 c=cell(m,n):生成一個(gè) m*n維的空數(shù)組 c=cell(size(A):生成一個(gè)和所包含的數(shù)組 A階數(shù)完全相同的空數(shù)組 EX1: A=eye(2) c=cell(size(A) A =10 01 c = EX2給單元數(shù)組賦值 D=cell

26、(1,3) D1,1=Good; D1,2=1 2;4 5;D1,3=1+4i; D D = D = Good 2x2 double 1.0000+ 4.0000i EX3利用直接輸入的方法創(chuàng)建單元數(shù)組,單元數(shù)組的下標(biāo)用圓括號括起來,右 邊是單元數(shù)組的內(nèi)容,用花括號括起來。 Aa(1,1)=GOOD;Aa(1,2)=200;Aa(2,1)=5-6i;Aa(3,2)=1 2;4 5 Aa = GOOD200 5.0000- 6.0000i 2x2 double (2) 單元數(shù)組的顯示 A、直接顯示 Aa Aa = GOOD 5.0000- 6.0000i 200 2x2double (3)單元數(shù)

27、31的運(yùn)算 恥丄”= GOOD Aa2rl 5P0000 - 6,OOOOi As = J As(lr2= 200 A2;2 = 】 A3t2= 1 2 B、利用函數(shù)顯示 celldisp(Aa) celldisp(Aa,Bb) C、利用圖形顯示單元數(shù)組 cellplot(Aa) cellplot(Aa, lege nd ) X=ceU(2f3) X1,2=Welcome1; Xlf3=ones(4); X2,3=1 2 3;4 5 6;7 8 9 Da=sum(X13 Db=sum(X2,3) X = X = ;Welcome1 4x4 double J3x3 double Da = 444

28、4 Db = 121518 (4) 單元數(shù)組的變形 E=reshape(X,1,6) cellplot(E) E = Welcome 4x4 double 3x3 double (5) 字符型單元數(shù)組:由于字符矩陣要求矩陣的每一行的長度相等,需要在字 符串的尾端加入空格,在讀取的時(shí)候,又常常將末尾的空格去掉,很不方便。 由于單元數(shù)組允許不同的單元內(nèi)有不同類型和長度的數(shù)據(jù),問題就可以避免。 cellstr:將標(biāo)準(zhǔn)的字符型數(shù)組轉(zhuǎn)換為字符型單元數(shù)組。 EX1: ne=aaa;bb ; cellstr(ne) ans = aaa bb 5、結(jié)構(gòu)型 (struct): 把不同類型的數(shù)組存儲(chǔ)在一起的數(shù)組稱

29、為結(jié)構(gòu)數(shù)組。結(jié)構(gòu)數(shù)組 相當(dāng)于數(shù)據(jù)庫的記錄。結(jié)構(gòu)數(shù)組中不同類型的數(shù)組是通過不同的域名來區(qū)分的。 在 MATLAB 的結(jié)構(gòu)數(shù)組中,每個(gè)元素都是由不同的數(shù)據(jù)類型所組成的,不同的 數(shù)據(jù)類型分別放在不同的數(shù)據(jù)區(qū)域里,稱為結(jié)構(gòu)數(shù)組的域。 (1)建立結(jié)構(gòu)數(shù)組 A、利用函數(shù)struct建立結(jié)構(gòu)數(shù)組 調(diào)用格式: s=struct(field 1,values 1,field 2,values 2,) 例 sxx=struct(name,zhao,Li,wang,age,20,21,29,address,changda)% 注意:所有的address都賦相同的值 sxx(1) sxx(2) B、利用賦值語句直接生

30、成結(jié)構(gòu)數(shù)組 =zhou; sss.age=10; sss.address=changda; sss =zhao sss = name: zhao age: 10 address: changda sss(3).address=chang an sss = 1x3 struct array with fields: name age address 相關(guān)函數(shù) A、getfield :獲取結(jié)構(gòu)數(shù)組中某個(gè)域的內(nèi)容 B、setfield :設(shè)置結(jié)構(gòu)數(shù)組中某個(gè)域的內(nèi)容 C、rmfield :刪除結(jié)構(gòu)數(shù)組的域 D、isfield :判斷某個(gè)變量域是否是一個(gè)結(jié)構(gòu)數(shù)組的域 E、

31、isstruct :判斷某個(gè)變量域是否是一個(gè)結(jié)構(gòu)數(shù)組 第 3 章 Matlab 編程基礎(chǔ) 3.1 Matlab 程序設(shè)計(jì) 1、設(shè)置完整的路徑; (1)對于用戶程序中使用的文件名和變量名,系統(tǒng)按照以下順序搜索: A、查找對象是否是工作空間的變量; B、查找對象是否是系統(tǒng)的內(nèi)部函數(shù); C、查找對象是否是在系統(tǒng)的當(dāng)前目錄下。 (2)路徑設(shè)置的方法: A、在命令窗口下使用cd命令; B、在菜單欄下的Current directory下。 2、參數(shù)值要集中放在程序的開始部分,便于維護(hù); 3、每行程序后輸入分號,則執(zhí)行程序行不會(huì)顯示在屏幕上;如果不輸入分號, 則執(zhí)行程序行會(huì)顯示在屏幕上; 4、符號“ %”

32、后的內(nèi)容是注釋行; 5、如果語句在一行中放不下,則可以在行末鍵入三個(gè)點(diǎn)(),指示下一行為續(xù) 行; 6、遇到不明白的命令,多使用在線幫助命令或系統(tǒng)演示示例; 7、盡量使程序模塊化,采用主程序調(diào)用子程序的方法,將所有子程序合并在一 起來執(zhí)行全部的操作。 MABLAB程序的基本組成部分: %說明部分 清除命令(可選) 定義變量(局部變量和全局變量) 按照順序行執(zhí)行的命令語句 控制語句開始 控制語句體 控制語句結(jié)束 其他命令(如繪圖等) 3.1.2 Matlab 的工作方式有二種 1. 交互式的指令操作方式。 即用戶在命令窗口中輸入命令并按下回車鍵后, 系 統(tǒng)執(zhí)行該指令并立即給出運(yùn)算結(jié)果。 2. m

33、文件的編程方式。 m 文件是由 matlab 語句構(gòu)成的文件 ,且文件名必須 以.m為擴(kuò)展名,如ex.m。用戶可以用任何文件編輯器來對 M文件進(jìn)行編輯。 MATLAB語言編寫的磁盤文件稱為 M文件,擴(kuò)展名為m,格式為*.m , M文件可 以互相調(diào)用,也可以調(diào)用它自己。 ( 1) M 文件在功能上分為: A、底稿文件 對于簡單的問題,在命令窗口的 MATLAB提示符下,輸入 MATLAB的語句,這 樣可以快速有效地得到結(jié)果。 當(dāng)問題比較復(fù)雜時(shí),需要執(zhí)行一系列語句,在 MATLAB 提示符下鍵入語句就變 的很麻煩。對這個(gè)問題,MATLAB提供了一種邏輯解決方案,允許用戶把MATLAB 命令放在一個(gè)

34、簡單的文本文件中,這些文件稱為底稿文件。 B. 函數(shù)文件 a. 格式:function f1,f2,=(x,y,z, ) 其中 x,y,z, 是形式輸入?yún)?shù), f1,f2, 為返回的形式輸出參數(shù)值, fun 為形式函數(shù) 名,函數(shù)名一般就是這個(gè)函數(shù)文件的文件名。 b. 文件前面幾行由開始的語句構(gòu)成了 M文件的幫助信息,當(dāng)鍵入: help 文件名 可得到文件的說明信息。(help為在線幫助) (2)函數(shù)文件和底稿文件的區(qū)別 : a、 形式上,函數(shù)文件第一行必須包含關(guān)鍵字function,且有函數(shù)名和 輸入輸出形式參數(shù),而底稿文件沒有; b、函數(shù)文件可以傳遞參數(shù),底稿文件不具備參數(shù)傳遞功能; c、函

35、數(shù)文件中定義及使用的變量都是局部變量,只在本函數(shù)內(nèi)有效, 底稿文件中定義及使用的變量都是全局變量,在退出文件后仍有效。 3.1.3 程序流程控制 1. 順序結(jié)構(gòu): Matlab 從上到下依次執(zhí)行各語句,該結(jié)構(gòu)最簡單。 2. 循環(huán)結(jié)構(gòu) (1) for-end 循環(huán) 用于循環(huán)次數(shù)事先確定的,格式為 for i=n:s:m(初值:步長:終值) 語句體 end s 為步長,可以為正數(shù),負(fù)數(shù)或小數(shù)。 例如, ?說明:變量x通常稱為循環(huán)變量。循環(huán)變量可以是一個(gè)數(shù)組。如果循環(huán)變 量是數(shù)組,在for和end語句之間的commands按數(shù)組中的每一列執(zhí)行一 次。在每一次迭代中, x 被指定為數(shù)組的下一列,即在第

36、 n 次循環(huán)中, x=array(:, n)。 / 把矩陣 x 的每一列元素依次賦給變量 A x=0 2 3;4 7 9 for a=x b=a+4 end 運(yùn)行結(jié)果: 0 4 4 8 6 11 7 13 x = 與For循環(huán)相關(guān)的其它規(guī)定: (1) For循環(huán)不能用For循環(huán)內(nèi)重新賦值循環(huán)變量n來終止。 (2) For循環(huán)可以嵌套。 (3) 當(dāng)有一個(gè)等效的數(shù)組方法來解給定的問題時(shí),應(yīng)避免用For 循環(huán)。例如, ? n=1:10; ? x=sin(n*pi/ 10) (4) 為了得到最大的速度,在For循環(huán)(While循環(huán))被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組。 例如,在For循環(huán)內(nèi)每執(zhí)行一次命令,變量

37、 x的大小增加1。迫使MATLAB每通 過一次循環(huán)要花費(fèi)時(shí)間對x分配更多的內(nèi)存。為了消去這個(gè)步驟,F(xiàn)or循環(huán)的例 子應(yīng)重寫為 x=zeros(1,10);% preallocated memory for x ? for n=1:10 ? x(n)=sin(n*pi/ 10); ? end (2)while-end 循環(huán) 用于循環(huán)次數(shù)不能事先確定的,格式為 while 表達(dá)式 語句體 end 只有表達(dá)式為真,就執(zhí)行語句體,表達(dá)式為假,終止該循環(huán)。 說明:表達(dá)式可以是一個(gè)矩陣,且矩陣中的所有元素都為非 0 時(shí),才執(zhí)行 循環(huán)體中的內(nèi)容。如果表達(dá)式為一空矩陣,則循環(huán)體中的內(nèi)容永遠(yuǎn)不會(huì)被執(zhí)行。 注意:

38、要想在任何時(shí)候終止循環(huán)( for 或 while 循環(huán)),可利用 break 語句 num=1;a=0; while num5 % number of apples % cost of apples % give 20% discount for larger purchases cost=(1-20/100)*cost; end cost cost = 200 4.Switch 分支結(jié)構(gòu)語句 格式為 switch 表達(dá)式 0 case 表達(dá)式 1 的值 命令 1 case 表達(dá)式 2 的值 命令 2 otherwise 命令行 n end switch 語句可以根據(jù)一個(gè)變量或表達(dá)式的值執(zhí)行特

39、定的語句。先計(jì)算 switch后邊表達(dá)式0的值,然后檢查case子句后面的值是否與表達(dá)式 0的值相 等,如表達(dá)式1的值與之相等,則執(zhí)行命令行1,否則繼續(xù)檢查第二個(gè)case子 句,如果所有case子句的值都不等于表達(dá)式0的值,貝U執(zhí)行otherwise后面的命 令行 n。 在switch中,如果一個(gè)case條件滿足,執(zhí)行完這個(gè)case后,直接跳到end 語句后面的語句,不在判斷其他 case語句。 5、return 語句 用來終止當(dāng)前正在執(zhí)行的函數(shù)中的命令,返回調(diào)用它的函數(shù)。 第4章 MATLAB多項(xiàng)式計(jì)算 4.1 多項(xiàng)式 4.1.1 多項(xiàng)式的表示 Matlab 中用按降冪排列的多項(xiàng)式系數(shù)組成的

40、行向量表示多項(xiàng)式 , 如:p(x)=xA3-2x-5被表示為: p = 1 0 -5; 1多項(xiàng)式的加減運(yùn)算 2多項(xiàng)式乘法運(yùn)算 函數(shù)conv(P1,P2)用于求多項(xiàng)式P1和P2的乘積。這里,P1、P2是兩個(gè)多項(xiàng)式系 數(shù)向量。 例4-1求多項(xiàng)式x4+8x3-10與多項(xiàng)式2/-X+3的乘積 3多項(xiàng)式除法 函數(shù)Q,r=deconv(P1,P2)用于對多項(xiàng)式P1和P2作除法運(yùn)算。其中Q返回多 項(xiàng)式P1除以P2的商式,r返回P1除以P2的余式。這里,Q和r仍是多項(xiàng)式系 數(shù)向量。 deconv是conv的逆函數(shù),即有 P仁conv(P2,Q)+。 例4-2 求多項(xiàng)式x4+8x3-10除以多項(xiàng)式2x2-x+3

41、的結(jié)果。 4.1.2 多項(xiàng)式的導(dǎo)數(shù) 對多項(xiàng)式求導(dǎo)數(shù)的函數(shù)是: p=polyder(A):求多項(xiàng)式 A的導(dǎo)函數(shù) p=polyder(A,B):求A與B積的導(dǎo)函數(shù) p,q=polyder(A,B):求A/B的導(dǎo)函數(shù),導(dǎo)函數(shù)的分子存入 p,分母存入q。 上述函數(shù)中,參數(shù)A,B是多項(xiàng)式的向量表示,結(jié)果 p,q也是多項(xiàng)式的向量表示。 例 4-3 求有理分式的導(dǎo)數(shù)。 命令如下: P=1; Q=1,0,5; p,q=polyder(P,Q) 4.1.3 多項(xiàng)式的求值 兩種求多項(xiàng)式值的函數(shù): polyval(P,x) polyvalm(P,x) 兩者的區(qū)別在于前者是代數(shù)多項(xiàng)式求值,而后者是矩陣多項(xiàng)式求 值。

42、1 代數(shù)多項(xiàng)式求值 polyval 函數(shù)用來求代數(shù)多項(xiàng)式的值,其調(diào)用格式為:Y=polyval(P,x) 若x為一數(shù)值,則求多項(xiàng)式在該點(diǎn)的值;若x為向量或矩陣,則對向量或矩陣中 的每個(gè)元素求其多項(xiàng)式的值。 例4-4已知多項(xiàng)式x4+8x3-10,分別取x=1.2和一個(gè)2X3矩陣為自變量計(jì)算該多 項(xiàng)式的值。 2矩陣多項(xiàng)式求值 polyvalm函數(shù)要求x為方陣,它以方陣為自變量求多項(xiàng)式的值。 設(shè)A為方陣,P代表多項(xiàng)式x3-5x2+8,那么 polyvalm(P,A)的含義是: A*A*A-5*A*A+8*eye(size(A) 而polyval(P,A)的含義是: A. *A.*A-5*A.*A+8

43、*ones(size(A) 例4-5仍以多項(xiàng)式x4+8x3-10為例,取一個(gè)2X2矩陣為自變量分別用polyval和 polyvalm 計(jì)算該多項(xiàng)式的值。 4.1.4 多項(xiàng)式求根 n 次多項(xiàng)式具有 n 個(gè)根,當(dāng)然這些根可能是實(shí)根, 也可能含有若干對共軛復(fù) 根。MATLAB提供的roots函數(shù)用于求多項(xiàng)式的全部根,其調(diào)用格式為: x=roots(P) 其中P為多項(xiàng)式的系數(shù)向量,求得的根賦給向量x,即x(1),x(2), 分刖代 表多項(xiàng)式的 n 個(gè)根。 注意:根被儲(chǔ)存為列向量 例4-6求多項(xiàng)式/+8x3-10的根。 命令如下: A=1,8,0,0,-10; x=roots(A) 若已知多項(xiàng)式的全部

44、根,則可以用 poly 函數(shù)建立起該多項(xiàng)式,其調(diào)用格式為: P=poly(x) 若x為具有n個(gè)元素的向量,貝U poly(x)建立以x為其 根的多項(xiàng)式,且將該多項(xiàng)式的系數(shù)賦給向量P。 例 4-7 已知 f(x) (1) 計(jì)算 f(x)=0 的全部根。 由方程f(x)=0的根構(gòu)造一個(gè)多項(xiàng)式g(x),并與f(x)進(jìn)行對比。 命令如下: P=3,0,4,-5,-7.2,5; X=roots(P)%求方程 f(x)=0 的根 G=poly(X)%求多項(xiàng)式 g(x) 4.1.5 多項(xiàng)式擬合 p=polyfit(x,y,n):用最小二乘法對已知數(shù)據(jù)x,y進(jìn)行擬合,以求得n階多項(xiàng)式的系 數(shù)向量; p,s=p

45、olyfit(x,y,n):p為返回的擬合后的多項(xiàng)式的系數(shù)向量,s為使用函數(shù)polyval 獲得的錯(cuò)誤預(yù)估計(jì)值。 例 4-8 x=linspace(0,2*pi,100); y=sin(x); t=polyfit(x,y,6); y1=polyval(t,x); plot(x,y,ro,x,y1,b-) 4.2 數(shù)據(jù)插值 4.2.1 一維數(shù)據(jù)插值 在 MATLAB 中, 實(shí)現(xiàn)這些插值的函數(shù)是 interp1 , 其調(diào)用格式為: Y1=interp1(X,Y,X1,method) 函數(shù)根據(jù)X,Y的值,計(jì)算函數(shù)在X1處的值。X,Y是兩個(gè)等長的已 知向量,分別描述采樣點(diǎn)和樣本值, X1 是一個(gè)向量或

46、標(biāo)量,描述欲插值的點(diǎn), Y1 是一個(gè)與 X1 等長的插值結(jié)果。 method 是插值方法,允許的取值有 A 、nearest 尋找最近數(shù)據(jù)點(diǎn) ,由其得出函數(shù)值 ; B、 linear線性插值 (該函數(shù)的默認(rèn)方法 ); C、 spline樣條插值 ,數(shù)據(jù)點(diǎn)處光滑 -左導(dǎo)等于右導(dǎo) ; D、 cubic三次插值 例 4-9 某觀測站測得某日 4:00 時(shí)至 18:00 時(shí)之間每隔 2 小時(shí)的室內(nèi)外溫度 CC),用3次樣條插值分別求得該日室內(nèi)外 4:30至17:30時(shí)之間每隔2小時(shí) 各點(diǎn)的近似溫度(C)。 設(shè)時(shí)間變量h為一行向量,溫度變量t為一個(gè)兩列矩陣,其中第一列 存放室內(nèi)溫度,第二列儲(chǔ)存室外溫度。

47、命令如下: h =4:2:18; t=18,20,22,25,30,28,24,28; 17,18,19,24,27,23,23,25; XI =4.5:2:17.5 YI=interp1(h,t,XI,spline ) %用 3 次樣條插值計(jì)算 4.2.2 二維數(shù)據(jù)插值 在MATLAB中,提供了解決二維插值問題的函數(shù) interp2 ,其調(diào)用格式為: Z1=interp2(X,Y,Z,X1,Y1,method) 其中X,Y是兩個(gè)向量,分別描述兩個(gè)參數(shù)的采樣點(diǎn), Z 是與參數(shù)采樣點(diǎn)對應(yīng)的函數(shù)值,X1,Y1是兩個(gè)向量或標(biāo)量, 描述欲插值的點(diǎn)。 Z1 是根據(jù)相應(yīng)的插值方法得到的插值結(jié)果。 A、ne

48、arest 尋找最近數(shù)據(jù)點(diǎn) ,由其得出函數(shù)值 ; B、linear 二維線性插值 C、cubic 二維三次插值 例4-10某實(shí)驗(yàn)對一根長10米的鋼軌進(jìn)行熱源的溫度傳播測試。用x表示測量 點(diǎn)025:10(米),用h表示測量時(shí)間0:30:60渺),用T表示測試所得各點(diǎn)的溫度 (C)。試用線性插值求出在一分鐘內(nèi)每隔20秒、鋼軌每隔1米處的溫度TI。 命令如下: x=0:2.5:10; h=0:30:60; T=95,14,0,0,0;88,48,32,12,4;47,44,54,48,41; xi=0:10; hi=0:20:40; TI=interp2(x,h,T,xi,hi) 第5章 MATLA

49、B統(tǒng)計(jì)函數(shù) 5.1 數(shù)據(jù)統(tǒng)計(jì)處理 5.1.1 最大值和最小值 MATLAB提供的求數(shù)據(jù)序列的最大值和最小值的函數(shù)分別為max和min,兩個(gè)函 數(shù)的調(diào)用格式和操作過程類似。 1求向量的最大值和最小值 求一個(gè)向量X的最大值的函數(shù)有兩種調(diào)用格式,分別是: (1) y=max(X):返回向量X的最大值存入y,如果X中包含復(fù)數(shù)元素,則按模取 最大值。 y,I=max(X):返回向量X的最大值存入y,最大值的序號存入I,如果X中包 含復(fù)數(shù)元素,則按模取最大值。 求向量X的最小值的函數(shù)是min(X),用法和max(X)完全相同。 例 5-1 求向量 x 的最大值。 命令如下: x=-53,72,9,15,2

50、3,57; y=max(x)%求向量 x 中的最大值 y,l=max(x)%求向量 x 中的最大值及其該元素的位置 2求矩陣的最大值和最小值 求矩陣 A 的最大值的函數(shù)有 3種調(diào)用格式,分別是: max(A):返回一個(gè)行向量,向量的第i個(gè)元素是矩陣A的第i列上的最大值。 Y,U=max(A):返回行向量丫和U,丫向量記錄A的每列的最大值,U向量記 錄每列最大值的行號。 max(A,dim) : dim取1或2。dim取1時(shí),該函數(shù)和 max(A)完全相同;dim 取2時(shí),該函數(shù)返回一個(gè)列向量,其第i個(gè)元素是A矩陣的第i行上的最大值。 求最小值的函數(shù)是 min,其用法和max完全相同。 例5-2

51、分別求3X5矩陣x中各列和各行元素中的最大值,并求整個(gè)矩陣的最大 值和最小值。 3兩個(gè)向量或矩陣對應(yīng)元素的比較 函數(shù)max和min還能對兩個(gè)同型的向量或矩陣進(jìn)行比較,調(diào)用格式為: (1) U=max(A,B): A,B是兩個(gè)同型的向量或矩陣,結(jié)果U是與A,B同型的向量或 矩陣,U的每個(gè)元素等于A,B對應(yīng)元素的較大者。 (2) U=max(A,n): n是一個(gè)標(biāo)量,結(jié)果U是與A同型的向量或矩陣,U的每個(gè)元 素等于A對應(yīng)元素和n中的較大者。min函數(shù)的用法和max完全相同。 例5-3求兩個(gè)2X3矩陣x, y所有同一位置上的較大元素構(gòu)成的新矩陣p。 5.1.2 求和與求積 數(shù)據(jù)序列求和與求積的函數(shù)是

52、 sum和prod,其使用方法類似。設(shè)X是一個(gè)向量, A是一個(gè)矩陣, 函數(shù)的調(diào)用格式為: sum(X):返回向量X各元素的和。 prod(X):返回向量X各元素的乘積。 sum(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的元素和。 prod(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的元素乘積。 sum(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于 sum(A);當(dāng)dim為 2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的各元素之和。 prod(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于 prod(A);當(dāng)dim 為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的各元素 乘積。 例5-5

53、求矩陣A的每行元素的乘積和全部元素的乘積。 5.1.3 平均值和中值 mean:求數(shù)據(jù)序列平均值的函數(shù); media n:求數(shù)據(jù)序列中值的函數(shù)。 兩個(gè)函數(shù)的調(diào)用格式為: mean(X):返回向量X的算術(shù)平均值。 median(X):返回向量X的中值。 mean(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的算術(shù)平均值。 median(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的中值。mean(A,dim): 當(dāng) dim 為 1 時(shí),該函數(shù)等同于 mean(A); 當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的算術(shù)平均值。 median(A,dim): 當(dāng) dim 為 1 時(shí),

54、該函數(shù)等同于 median(A) ; 當(dāng) dim 為 2 時(shí),返回一個(gè)列向量,其第 i 個(gè)元素是 A 的第 i 行的中值。 例 5-5 分別求向量 x 與 y 的平均值和中值。 5.1.4 累加和與累乘積 在 MATLAB 中,使用 cumsum 和 cumprod 函數(shù)能方便求 得向量和矩陣元素的累加和與累乘積向量,函數(shù)的調(diào)用格 式為: cumsum(X):返回向量X累加和向量。 cumprod(X):返回向量X累乘積向量。 cumsum(A):返回一個(gè)矩陣,其第i列是A的第i列的累加和向量。 cumprod(A):返回一個(gè)矩陣,其第i列是A的第i列的累乘積向量。 cumsum(A,dim)

55、: 當(dāng) dim 為 1 時(shí),該函數(shù)等同于 cumsum(A); 當(dāng) dim 為 2 時(shí),返回一個(gè)矩陣,其第 i 行是 A 的第 i 行的累加和向量 cumprod(A,dim): 當(dāng) dim 為 1 時(shí),該函數(shù)等同于 cumprod(A); 當(dāng)dim為2時(shí),返回一個(gè)向量,其第i行是A的第i行的累乘積向量。 例5-5求s矩陣的累加和。 5.1.5 標(biāo)準(zhǔn)方差與相關(guān)系數(shù) 1求標(biāo)準(zhǔn)方差 std:計(jì)算數(shù)據(jù)序列的標(biāo)準(zhǔn)方差的函數(shù)。 對于向量X,std(X)返回一個(gè)標(biāo)準(zhǔn)方差。 對于矩陣A,std(A)返回一個(gè)行向量,它的各個(gè)元素便是矩陣A各列的標(biāo)準(zhǔn)方 差。 std 函數(shù)的一般調(diào)用格式為: Y=std(A,fl

56、ag,dim) 其中 dim 取 1 或 2 當(dāng) dim=1 時(shí),求各列元素的標(biāo)準(zhǔn)方差; 當(dāng) dim=2 時(shí),則求各行元素的標(biāo)準(zhǔn)方差。 flag 取 0 或 1, 當(dāng)flag=O時(shí),按cl所列公式計(jì)算標(biāo)準(zhǔn)方差; 當(dāng)flag=1時(shí),按c2所列公式計(jì)算標(biāo)準(zhǔn)方差。 缺省 flag=O, dim=1 。 例5-7對二維矩陣X,從不同維方向求出其標(biāo)準(zhǔn)方差。 2相關(guān)系數(shù) MATLAB提供了 corrcoef函數(shù),可以求出數(shù)據(jù)的相關(guān) 系數(shù)矩陣。 corrcoef 函數(shù)的調(diào)用格式為: corrcoef(X):返回從矩陣X形成的一個(gè)相關(guān)系數(shù)矩陣。此相關(guān)系數(shù)矩陣的大小與 矩陣X一樣。它把矩陣X的每列作為一個(gè)變量,

57、然后求它們的相關(guān)系數(shù)。 corrcoef(X,丫):在這里,X,丫是向量,它們與 corrcoef(X,Y)的作用一樣。 例5-8生成滿足正態(tài)分布的10000X5隨機(jī)矩 陣,然后求各列元素的均值和標(biāo)準(zhǔn)方差,再求 這 5 列隨機(jī)數(shù)據(jù)的相關(guān)系數(shù)矩陣。 命令如下: X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X) 5.1.6 排序 MATLAB中對向量X是排序函數(shù)是sort(X),函數(shù)返回一個(gè)對X中的元素按升序排 列的新向量。sort函數(shù)也可以對矩陣A的各列或各行重新排序, 其調(diào)用格式為: Y,I=sort(A,dim) 其中 dim 指明對 A

58、的列還是行進(jìn)行排序。 若dim=1,則按列排; 若dim=2,則按行排。 丫是排序后的矩陣,而I記錄丫中的元素在A中位置。 5.2 離散傅立葉變換 離散傅立葉變換的實(shí)現(xiàn)一維離散傅立葉變換函數(shù),其調(diào)用格式與功能為: 1、 fft(X):返回向量X的離散傅立葉變換。設(shè)X的長度(即元素個(gè)數(shù))為N,若N 為 2 的冪次,則為以 2 為基數(shù)的快速傅立葉變換,否則為運(yùn)算速度很慢的非 2 幕次的算法。對于矩陣X,fft(X)應(yīng)用于矩陣的每一列。 2、 fft(X,N):計(jì)算N點(diǎn)離散傅立葉變換。它限定向量的長度為 N,若X的長度 小于N,則不足部分補(bǔ)上零;若大于N,則刪去超出N的那些元素。對于矩陣X, 它同樣

59、應(yīng)用于矩陣的每一列,只是限定了向量的長度為 N。 3、fft(X,dim)或fft(X,N,dim):這是對于矩陣而言的函數(shù)調(diào)用格式,前者的功 能與FFT(X基本相同,而后者則與FFT(X,N基本相同。只是當(dāng)參數(shù)dim=1時(shí),該 函數(shù)作用于X的每一列;當(dāng)dim=2時(shí),則作用于X的每一行。 值得一提的是,當(dāng)已知給出的樣本數(shù)NO不是2的幕次時(shí),可以取一個(gè)N使它大 于NO且是2的幕次,然后利用函數(shù)格式fft(X,N)或fft(X,N,dim)便可進(jìn)行快速傅 立葉變換。這樣,計(jì)算速度將大大加快。 相應(yīng)地,一維離散傅立葉逆變換函數(shù)是ifft。ifft(F)返回F的一維離散傅立葉逆變 換;ifft(F,N

60、)為N點(diǎn)逆變換;ifft(F,dim)或ifft(F,N,dim)則由N或dim確定逆變換 的點(diǎn)數(shù)或操作方向。 例 5-15 給定數(shù)學(xué)函數(shù) x(t)=12sin(2 nX 15)+5oS(2 nX 50t) 取N=128,試對t從01秒采樣,用fft作快速傅立葉變換,繪制相應(yīng)的振 幅-頻率圖。 程序如下: N=128;% 采樣點(diǎn)數(shù) T=1;% 采樣時(shí)間終點(diǎn) t=linspace(0,T,N);% 給出 N 個(gè)采樣時(shí)間 ti(I=1:N) x=12*sin(2*pi*10*t+pi/ 5)+5*cos(2*pi*50*t);% 求各采樣點(diǎn)樣本值 x dt=t(2)-t(1);% 采樣周期 f=1

溫馨提示

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

評論

0/150

提交評論