




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章 MATLAB 語言程序設(shè)計基礎(chǔ) MATLAB 語言的簡潔高效性 MATLAB 語言的科學(xué)運算功能 MATLAB 語言的繪圖功能 MATLAB 龐大的工具箱與模塊集 MATLAB 強(qiáng)大的動態(tài)系統(tǒng)仿真功能本章主要內(nèi)容 MATLAB 基本命令簡介 MATLAB 程序設(shè)計語言基礎(chǔ) 基本數(shù)學(xué)運算 MATLAB語言流程控制 MATLAB 函數(shù)的編寫 二維圖形繪制 三維圖形繪制 0 初識初識MATLAB例例1-1 繪制正弦曲線和余弦曲線。繪制正弦曲線和余弦曲線。x=0:0.5:360*pi/180;plot(x,sin(x),x,cos(x); 例例1-2 求方程求方程 3x4+7x3 +9x2-2
2、3=0的全部根。的全部根。p=3,7,9,0,-23; %建立多項式系數(shù)向量建立多項式系數(shù)向量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)*bMathematica的計算結(jié)果(的計算結(jié)果(比較比較)Mathematica的計算結(jié)果的計算結(jié)果2Mathematica的計算結(jié)果的計算結(jié)果3、4Matlab工作環(huán)境界面工作環(huán)境界面包含一行標(biāo)題欄、一行菜單欄、一行工具欄、五個工作窗口和一行注釋欄。五個工作窗口分別為:發(fā)
3、射臺( Launch Pad)、工作區(qū)( Workspace)、命令歷史( Command History)、當(dāng)前路徑( Current Directory)和命令窗口( Command Windows)。 歷史命令歷史命令 發(fā)射臺發(fā)射臺 命令命令 窗口窗口 標(biāo)題欄標(biāo)題欄 菜單欄菜單欄 常用工具欄常用工具欄 工作區(qū)工作區(qū) 當(dāng)前路徑當(dāng)前路徑2.1 MATLAB 基本命令簡介 MATLAB 通用命令 Matlab常用的窗口幫助命令常用的窗口幫助命令 help 命令直接輸入 help, MATLAB 將列出所有的幫助主題,每個幫助主題對應(yīng)于 MATLAB搜索路徑中的一個目錄;help 后加幫助主題,
4、可獲得指定幫助主題的幫助信息;help 后加函數(shù)名; help 后加命令名,將得到指定命令的用法; demo 命令 helpwin 命令用于打開 MATLAB 的幫助文件窗 lookfor 命令允許用戶通過完整的或部分關(guān)鍵字來搜索要查找的內(nèi)容 who 和 whos 的作用是列出在 MATLAB 工作內(nèi)存中駐留的變量名 exist 命令用來查找或檢查變量和函數(shù)的存在性怎樣獲得詳盡的幫助信息(總結(jié))1.1. 首先是首先是MATLABMATLAB窗口中的窗口中的helphelp命令,它最常用、最快,往往命令,它最常用、最快,往往也是最有效的。給出關(guān)鍵字就能找到相應(yīng)的說明。也是最有效的。給出關(guān)鍵字就能
5、找到相應(yīng)的說明。HelpHelp命命令簡單易用,但是它要求準(zhǔn)確給出關(guān)鍵字,如果記憶不準(zhǔn),令簡單易用,但是它要求準(zhǔn)確給出關(guān)鍵字,如果記憶不準(zhǔn),就很難找到。這時就應(yīng)該用第二種方案。就很難找到。這時就應(yīng)該用第二種方案。2.2. Help DeskHelp Desk:這是:這是MATLABMATLAB的的HTMLHTML格式的幫助文檔,有著很好格式的幫助文檔,有著很好的組織??梢栽诿钚墟I入的組織??梢栽诿钚墟I入helpdeskhelpdesk,進(jìn)入,進(jìn)入“Matlab Help Matlab Help DeskDesk”。Help DeskHelp Desk的搜索可以使用不完全關(guān)鍵字,這樣即的搜索
6、可以使用不完全關(guān)鍵字,這樣即使遇到記憶模糊的情況也可以很快查到。使遇到記憶模糊的情況也可以很快查到。3.3. 前面兩種方法所得到的幫助信息常常是不夠細(xì)致的,需要前面兩種方法所得到的幫助信息常常是不夠細(xì)致的,需要用第三種途徑來補(bǔ)充,這就是電子版的使用手冊。用第三種途徑來補(bǔ)充,這就是電子版的使用手冊。MATLABMATLAB里包含了大量關(guān)于里包含了大量關(guān)于MATLABMATLAB安裝、使用、編程以及各種工具安裝、使用、編程以及各種工具箱等的電子版手冊,全部為箱等的電子版手冊,全部為PDFPDF格式格式, ,具有搜索功能,因此具有搜索功能,因此也可以在指定的手冊中搜索關(guān)鍵字,使用非常方便。也可以在指
7、定的手冊中搜索關(guān)鍵字,使用非常方便。 遠(yuǎn)程幫助系統(tǒng)遠(yuǎn)程幫助系統(tǒng) 在在MathWorks公司的主頁公司的主頁(http:/)上可上可以找到很多有用的信息,國內(nèi)的一些網(wǎng)站也有豐富的信息資以找到很多有用的信息,國內(nèi)的一些網(wǎng)站也有豐富的信息資源。源。2.2 MATLAB 程序設(shè)計語言基礎(chǔ) MATLAB 語言的變量命名規(guī)則命名規(guī)則是:(1)變量名必須是不含空格的單個詞;(2)變量名區(qū)分大小寫;(3)變量名最多不超過19個字符;(4)變量名必須以字母打頭,之后可以是 任意字母、數(shù)字或下劃線,變量名中 不允許使用標(biāo)點符號變量分類:變量分類: 局部變量和全局變量局部變量和全局變量 永久變量(保留常量)永久變量
8、(保留常量)只能在某一函數(shù)體內(nèi)使用,而不能從其他函數(shù)和只能在某一函數(shù)體內(nèi)使用,而不能從其他函數(shù)和 Matlab工作空間訪問的變量,就是工作空間訪問的變量,就是局部變量局部變量。在幾個函數(shù)及在幾個函數(shù)及Matlab函數(shù)中都能使用的變量就是函數(shù)中都能使用的變量就是全局全局變量變量。 (全局變量名應(yīng)盡可能大寫,并由(全局變量名應(yīng)盡可能大寫,并由globe聲明)聲明)Matlab內(nèi)部的每一個數(shù)據(jù)元素都是用內(nèi)部的每一個數(shù)據(jù)元素都是用雙精度數(shù)雙精度數(shù)(double)來表示和存儲的。來表示和存儲的。變量輸出時用戶可以用變量輸出時用戶可以用format命令設(shè)置或改變輸出命令設(shè)置或改變輸出格式。格式。短格式短格
9、式(Short):1.3333 0.0000短格式短格式e方式方式(Short e):1.3333e+00 1.2345e-06短格式短格式g方式方式(Short g):1.3333 0.0長格式長格式(Long):1.33333333333333 0.00000123450000長格式長格式e方式方式(Long e):1.33333333333333e+00 1.2345000000000e-06長格式長格式g方式方式(Long g):1.33333333333333 0.0000012345銀行格式銀行格式(Bank):1.33 0.00十六進(jìn)制格式十六進(jìn)制格式(Hex):3ff55555
10、5555 3eb46231abfd71+格式格式(+):+有理數(shù)(有理數(shù)(Rational):1/3 2469/2000000000MATLAB 的保留常量數(shù)學(xué)運算符號及標(biāo)點符號數(shù)學(xué)運算符號及標(biāo)點符號(1)MATLAB的每條命令后,若為逗號或無標(biāo)逗號或無標(biāo)點點符號,則顯示命令的結(jié)果;若命令后為分號分號,則禁止顯示結(jié)果. (2)“%” 后面所有文字為注釋. (3) “.”表示續(xù)行.數(shù)學(xué)運算符號及標(biāo)點符號數(shù)學(xué)運算符號及標(biāo)點符號 雙精度數(shù)值變量 IEEE標(biāo)準(zhǔn),64位 (占8字節(jié)),11指數(shù)位,53數(shù)值位和一個符號位 double( ) 函數(shù)的轉(zhuǎn)換 其他數(shù)據(jù)類型 uint8( ),無符號8位整形數(shù)據(jù)類
11、型,值域為0至255,常用于圖像表示和處理。(節(jié)省存儲空間,提高處理速度) int8( ), int16( ), int32( ),uint16( ), uint32( ) 所謂符號計算是指在運算時所謂符號計算是指在運算時,無須事先對無須事先對變量賦值變量賦值,而將所得到結(jié)果以標(biāo)準(zhǔn)的符號而將所得到結(jié)果以標(biāo)準(zhǔn)的符號形式來表示。形式來表示。 MathWorks公司以公司以Maple的內(nèi)核作為符的內(nèi)核作為符號計算引擎(號計算引擎(Engine),依賴),依賴Maple已有已有的函數(shù)庫,開發(fā)了實現(xiàn)符號計算的兩個的函數(shù)庫,開發(fā)了實現(xiàn)符號計算的兩個工具箱:基本符號工具箱和擴(kuò)展符號工工具箱:基本符號工具箱和
12、擴(kuò)展符號工具箱。具箱。 1、sym函數(shù) sym函數(shù)的主要功能是創(chuàng)建符號變量,以便進(jìn)行符號運算,也可以用于創(chuàng)建符號表達(dá)式或符號矩陣。用sym函數(shù)創(chuàng)建符號變量的一般格式為: x = sym(x) 其目的是將x創(chuàng)建為符號變量,以x作為輸出變量名。每次調(diào)用該函數(shù),可以定義一個符號變量。(一) 定義符號變量 【例】作符號計算: a,b,x,y均為符號運算量。在符號運算前,應(yīng)先將a,b,x,y定義為符號運算量15ax byax by a=sym(a); %定義a為符號運算量,輸出變量名為a b=sym(b); x=sym(x); y=sym(y); x,y=solve(a*x-b*y-1,a*x+b*y-
13、5,x,y) %以a,b為符號常數(shù),x,y為符號變量即可得到方程組的解: x =3/a y =2/b2、syms函數(shù)syms函數(shù)的功能與sym函數(shù)類似。syms函數(shù)可以在一個語句中同時定義多個符號變量,其一般格式為: syms var_list var_props 例:syms a b real syms c positive 符號型數(shù)值可采用變精度函數(shù)求值 vpa(A), 或 vpa (A,n) vpa(pi)ans = 3.1415926535897932384626433832795 vpa(pi,60) 字符串型數(shù)據(jù):用單引號括起來 。 多維數(shù)組:是矩陣的直接擴(kuò)展,多個下標(biāo)。 單元數(shù)組
14、:將不同類型數(shù)據(jù)集成到一個變量名下面,用表示;例:用Ai,j可表示單元數(shù)組A的第i行,第j列的內(nèi)容。 類與對象:允許用戶自己編寫包含各種復(fù)雜詳細(xì)的變量,可以定義傳遞函數(shù)。MATLAB支持的其它數(shù)據(jù)結(jié)構(gòu)ans =3.14159265358979323846264338327950288419716939937510582097494 直接賦值語句 賦值變量賦值表達(dá)式 例: a=pi2 a = 9.8696 例:表示矩陣 B=1+9i,2+8i,3+7j;4+6j 5+5i,6+4i;7+3i,8+2j 1iB = 1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000
15、+ 7.0000i 4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i 7.0000 + 3.0000i 8.0000 + 2.0000i 0 + 1.0000iMATLAB 的基本語句結(jié)構(gòu) 函數(shù)調(diào)用語句返回變量列表函數(shù)名(輸入變量列表) 例:a,b,c=my_fun(d,e,f,c) 冒號表達(dá)式 v=s1:s2:s3 該函數(shù)生成一個行向量v,其中s1是起始值, s2是步長(若省略步長為1), s3是最大值。 例:用不同的步距生成 (0,p) 間向量。 v1=0:0.2:piv1 = Columns 1 through 9 0 0.2000 0
16、.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 Columns 10 through 16 1.8000 2.0000 2.2000 2.4000 2.6000 2.8000 3.0000 v2=0:-0.1:pi %步距為負(fù),不能生成向量,得出空矩陣v2 = Empty matrix: 1-by-0 v3=0:piv3 = 0 1 2 3 v4=pi:-1:0 逆序排列構(gòu)成新向量v4 = 3.1416 2.1416 1.1416 0.1416 v5=0:0.4:pi,piv5 = 0 0.4000 0.8000 1.2000 1.6000 2.
17、0000 2.4000 2.8000 3.1416MATLAB 以以矩陣矩陣為基本的運算單元,為基本的運算單元,向量向量和標(biāo)量和標(biāo)量作為特殊的矩陣處理:作為特殊的矩陣處理:向量向量看作只有看作只有一行或一列的矩陣;一行或一列的矩陣;標(biāo)量標(biāo)量看作只有一個元素看作只有一個元素的矩陣。的矩陣。1、 矩陣的構(gòu)造矩陣的構(gòu)造a.直接輸入直接輸入b.利用內(nèi)部函數(shù)產(chǎn)生矩陣?yán)脙?nèi)部函數(shù)產(chǎn)生矩陣c.利用利用M文件產(chǎn)生矩陣文件產(chǎn)生矩陣d.從外部數(shù)據(jù)文件調(diào)入矩陣從外部數(shù)據(jù)文件調(diào)入矩陣A=1,2,3;4,5,6;a. 直接輸入直接輸入直接輸入需遵循以下基本規(guī)則:直接輸入需遵循以下基本規(guī)則:整個矩陣應(yīng)以整個矩陣應(yīng)以“ ”
18、為首尾,即整個輸入矩陣必須包為首尾,即整個輸入矩陣必須包含在方括號中;含在方括號中; 矩陣中,行與行之間必須用分號矩陣中,行與行之間必須用分號“ ;”或或 Enter 鍵鍵( 按按 Enter 鍵)符分隔;鍵)符分隔; 每行中的元素用逗號每行中的元素用逗號“ ,”或空格分隔;或空格分隔; 矩陣中的元素可以是數(shù)字或表達(dá)式,但表達(dá)式中不矩陣中的元素可以是數(shù)字或表達(dá)式,但表達(dá)式中不可包含未知的變量,可包含未知的變量,MATLAB用表達(dá)式的值為該位用表達(dá)式的值為該位置的矩陣元素賦值。當(dāng)矩陣中沒有任何元素時,該置的矩陣元素賦值。當(dāng)矩陣中沒有任何元素時,該矩陣被稱作矩陣被稱作“ 空陣空陣”( Empty
19、Matrix)。)。 A=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16 A = 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16利用表達(dá)式輸入利用表達(dá)式輸入 B=1,sqrt(25),9,132,6,10,7*23+sin(pi),7,11,154,abs(-8),12,16B = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16由向量構(gòu)成矩陣由向量構(gòu)成矩陣向量是組成矩陣的基本元素之一。向量元素需要向量是組成矩陣的基本元素之一。向量元素需要用方括號括起來。元素之間用空格和逗號分隔生用方括號括起來。元素之間用空
20、格和逗號分隔生成行向量,用分號隔開生成列向量。可以把行向成行向量,用分號隔開生成列向量??梢园研邢蛄靠闯闪靠闯? n 階矩陣,階矩陣,把列向量看成把列向量看成n 1 階矩陣。階矩陣。向量的構(gòu)造方法:向量的構(gòu)造方法: 直接輸入向量直接輸入向量 利用冒號生成向量利用冒號生成向量 利用利用 linspace/logspace 生成向量生成向量 a=1,2,3,4; x=0:0.5:2;% x=logspace(a,b,n) 生成有生成有 n 個元素的行向量個元素的行向量 x,其元素,其元素起點起點 x(1)=10a,終點,終點 x(n)=10b。 b=logspace(0,2,4)b = 1.000
21、0 4.6416 21.5443 100.0000 x x = 0 0.5000 1.0000 1.5000 2.0000% x=linspace(a,b,n) 生成有生成有 n 個元素的行向個元素的行向量量 x,其元素值在,其元素值在 a、b 之間線性分布。之間線性分布。 y=linspace(0,2,7) y = 0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000 z=-1 x 3z = -1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000 u=y;zu = 0 0.3333 0.6667 1.0000 1.3333
22、1.6667 2.0000 -1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000b.利用內(nèi)部函數(shù)產(chǎn)生矩陣?yán)脙?nèi)部函數(shù)產(chǎn)生矩陣%compan生成生成x向量的伴隨矩陣向量的伴隨矩陣 x=2,4,6,8,10 x = 2 4 6 8 10 compan(x)ans = -2 -3 -4 -5 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 % eye 生成單位陣生成單位陣 S=eye(6) S = 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1% one
23、s 生成全部元素為生成全部元素為 1 的矩陣的矩陣 ones(3,4) ans = 1 1 1 1 1 1 1 1 1 1 1 1 F=5*ones(3)F = 5 5 5 5 5 5 5 5 5% zeros 生成全部元素為生成全部元素為0的矩陣的矩陣 Z=zeros(2,4)Z = 0 0 0 0 0 0 0 0% rand 生成均勻分布的隨機(jī)矩陣生成均勻分布的隨機(jī)矩陣 R=rand(4) R = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185
24、 0.7919 0.4057%生成空陣生成空陣 K= K = c.利用利用M文件產(chǎn)生矩陣文件產(chǎn)生矩陣A=1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16,17,18,19,2021,22,23,24,25d.從外部數(shù)據(jù)文件調(diào)入矩陣 用load命令輸入 用Import 菜單輸入 基本語句格式 B=A(v1,v2) v1、 v2分別表示提取行(列)號構(gòu)成的向量。例: A=1,2,3,4;3,4,5,6;5,6,7,8;7,8,9,0A = 1 2 3 4 3 4 5 6 5 6 7 8 7 8 9 0 B1=A(1:2:end,:) 提取全部奇數(shù)行、所有列。B1 = 1
25、 2 3 4 5 6 7 8子矩陣提取 B2=A(3,2,1,2,3,4) 提取3,2,1行、2,3,4列構(gòu)成子矩陣。 A =B2 = 1 2 3 4 6 7 8 3 4 5 6 4 5 6 5 6 7 8 2 3 4 7 8 9 0 B3=A(:,end:-1:1) 將A矩陣左右翻轉(zhuǎn),即最后一列排在最前面。B3 = 4 3 2 1 6 5 4 3 8 7 6 5 0 9 8 7矩陣拆分矩陣拆分&子矩陣的提取子矩陣的提取 (1) 利用利用冒號冒號表達(dá)式獲得子矩陣表達(dá)式獲得子矩陣 A(:,j)表示取表示取A矩陣的矩陣的第第j列列全部全部元素元素;A(i,:)表示表示A矩陣矩陣第第i行的行的全部全
26、部元素元素;A(i,j)表示取表示取A矩陣矩陣第第i行、第行、第j列的元素。列的元素。 A(i:i+m,:)表示取表示取A矩陣第矩陣第ii+m行的全部元行的全部元素;素;A(:,k:k+m)表示取表示取A矩陣第矩陣第kk+m列的全部列的全部元素,元素,A(i:i+m,k:k+m)表示取表示取A矩陣第矩陣第ii+m行內(nèi),行內(nèi),并在第并在第kk+m列中的所有元素。列中的所有元素。 矩陣表示 矩陣轉(zhuǎn)置 數(shù)學(xué)表示 (若A有復(fù)數(shù)元素,先轉(zhuǎn)置再取各元素共軛復(fù)數(shù)值,Hermit轉(zhuǎn)置) MATLAB 求解 BA. C=A2.3 基本數(shù)學(xué)運算矩陣的代數(shù)運算 矩陣加減法 C=A+B D=A-B 注意維數(shù)是否相等
27、注意其一為標(biāo)量的情形 矩陣乘法 數(shù)學(xué)表示 MATLAB 表示 C=A*B 注意兩個矩陣維數(shù)相容性 矩陣除法 矩陣左除:AX = B,求 X MATLAB 求解:X=AB 若A為非奇異方陣,則 X=A-1B 最小二乘解(若A不是方陣) 矩陣右除:XA = B,求 X MATLAB求解:X=B/A 若A為非奇異方陣,則 X=BA-1 最小二乘解(若A不是方陣) 矩陣翻轉(zhuǎn) 左右翻轉(zhuǎn) B=fliplr(A) 上下翻轉(zhuǎn) C=flipud(A) 旋轉(zhuǎn) 90o (逆時針) D=rot90(A) 如何旋轉(zhuǎn)180o? D=rot180(A) ? Undefined function or variable ro
28、t180. D=rot90(rot90(A)矩陣乘方 A 為方陣,求 MATLAB 實現(xiàn): F=Ax,1iji mjba 1,ijni jca 點運算-矩陣對應(yīng)元素的直接運算數(shù)學(xué)表示 : MATLAB 實現(xiàn): C=A.*B例: A=1,2,3;4,5,6;7,8,0; B=A.AB = 1 4 27 256 3125 46656 823543 16777216 1 C=A.*AC = 1 4 9 16 25 36 49 64 0 邏輯變量: 當(dāng)前版本有邏輯變量 對 double 變量來說,非 0 表示邏輯 1 邏輯運算(相應(yīng)元素間的運算) 與運算 A&C 或運算 A|C 非運算 A 異或運算
29、xor(A,C)矩陣的邏輯運算 各種允許的比較關(guān)系 , =, , AA = 1 2 3 4 5 6 7 8 0 find(A=5), 大于或等于5元素的下標(biāo) ans = 3 5 6 8矩陣的比較運算 i,j=find(A=5);i,j 顯示行標(biāo),列標(biāo)ans = A= 3 1 1 2 3 2 2 4 5 6 3 2 7 8 0 2 3 all(A=5) 某列元素全大于或等于5時,相應(yīng)元素為1,否則為0。ans = 0 0 0 any(A=5) 某列元素中含有大于或等于5時,相應(yīng)元素為1,否則為0。ans = 1 1 1解析結(jié)果的化簡與變換MATLAB 實現(xiàn): s1=simple(s) 從各種方法
30、中自動選擇最簡格式 s1,how=simple(s) 化簡并返回實際采用的化簡方法 其中,s為原始表達(dá)式,s1為化簡后表達(dá)式,how為采用的化簡方法。 其他常用化簡函數(shù)(信息與格式可用 help命令得出) collect( ) 合并同類項 expand( ) 展開多項式 factor( ) 因式分解 numden( ) 提取多項式的分子和分母 sincos( ) 三角函數(shù)的化簡例: syms s; P=(s+3)2*(s2+3*s+2)*(s3+12*s2+48*s+64)P =(s+3)2*(s2+3*s+2)*(s3+12*s2+48*s+64) simple(P) % 一系列化簡嘗試,得
31、出計算機(jī)認(rèn)為的最簡形式ans = (s+3)2*(s+2)*(s+1)*(s+4)3 a,m=simple(P) % 返回化簡方法為因式分解方法,用 factor( ) 函數(shù)將得同樣結(jié)果 a = (s+3)2*(s+2)*(s+1)*(s+4)3m =factor expand(P) ans = s7+21*s6+185*s5+883*s4+2454*s3+3944*s2+3360*s+1152 變量替換 其中,f為原表達(dá)式,用x*替換x得出新的。例:求其 Taylor 冪級數(shù)展開 syms a b c d t; % 假設(shè)這些變量均為符號變量 f=cos(a*t+b)+sin(c*t)*sin
32、(d*t); % 定義給定函數(shù) f(t) f1=subs(f,a,b,c,d,t,0.5*pi,pi,0.25*pi,0.125*pi,4)f1 = -1.0000*111(,)fsubs f xx*11212(,)nnfsubs fxxxxxx基本數(shù)論運算下取整、上取整、四舍五入、離0近方向取整、最簡有理數(shù)、求模的余數(shù)、最大公約數(shù)、最小公倍數(shù)、質(zhì)因數(shù)分解、判定是否為質(zhì)數(shù)例:對下面的數(shù)據(jù)進(jìn)行取整運算 -0.2765, 0.5772, 1.4597, 2.1091, 1.191, -1.6187 A=-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187; floo
33、r(A) % 向 -inf 方向取整ans = -1 0 1 2 1 -2 ceil(A) % 向 +inf 方向取整ans = 0 1 2 3 2 -1 round(A) %取最近的整數(shù)ans = 0 1 1 2 1 -2 fix(A) %向 0 的方向取整ans = 0 0 1 2 1 -1 例:3x3 Hilbert 矩陣,試用 rat() 函數(shù)變換 A=hilb(3); n,d=rat(A) 將元素變換成最小有理數(shù),n,d分別為分子、分母矩陣。n = 1 1 1 1 1 1 1 1 1d = 1 2 3 2 3 4 3 4 5 例:1856120,1483720,最大公約數(shù)、最小公倍數(shù)
34、,質(zhì)因數(shù)分解。 format long m=1856120; n=1483720; gcd(m,n), lcm(m,n)求m,n的最大公約數(shù)、最小公倍數(shù)。ans = 1.0e+009 * 0.00000196000000 1.40508284000000 factor(lcm(n,m) 對lcm(n,m)進(jìn)行質(zhì)因數(shù)分解。ans = 2 2 2 5 7 7 757 947 例:1-100間質(zhì)數(shù) A=1:10; isprime(A) 若向量A中某個整數(shù)值為質(zhì)數(shù),則相應(yīng)位置為1,其他為零。ans = 0 1 1 0 1 0 1 0 0 0 A=1:100; B=A(isprime(A)B = Col
35、umns 1 through 16 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 Columns 17 through 25 59 61 67 71 73 79 83 89 97 rem(A,C) %A中元素對C中元素求模得出的余數(shù)。 2.4.1 循環(huán)結(jié)構(gòu) for 結(jié)構(gòu) while 結(jié)構(gòu)2.4 MATLAB 語言流程控制例:用循環(huán)求解 s=0;for i=1:100 s=s+i;end s=0; i=1;while (i sum(1:100)ans = 5050例:用循環(huán)求解求最小的 m s=0; m=0;while (s tic, s=0; for
36、i=1:100000, s=s+1/2i+1/3i; end; tocelapsed_time = 1.1820 tic, i=1:100000; s=sum(1./2.i+1./3.i); toc 向量化所需時間少elapsed_time = 0.3010 i=1:10;s=1./2.i+1./3.i, ss=sum(1./2.i+1./3.i)s = 0.8333 0.3611 0.1620 0.0748 0.0354 0.0170 0.0083 0.0041 0.0020 0.0010ss = 1.49902.4.2 轉(zhuǎn)移結(jié)構(gòu)例:用循環(huán)求解求最大的 m s=0;for i=1:10000
37、 s=s+i; if s10000, break; endend ii = 1412.4.3 開關(guān)結(jié)構(gòu) 和 C 語言的區(qū)別當(dāng)開關(guān)表達(dá)式的值等于某表達(dá)式,執(zhí)行該語句后結(jié)束該結(jié)構(gòu),不用 break當(dāng)需要在開關(guān)表達(dá)式滿足若干個表達(dá)式之一時執(zhí)行某一程序段,則用單元形式 (用大括號把這些表達(dá)式括起來,用逗號分隔)otherwise 語句,不是C語言中的 default(但與之等價)程序的執(zhí)行結(jié)果和各個case順序無關(guān)case 語句中條件不能重復(fù),否則列在后面的條件將不能執(zhí)行 全新結(jié)構(gòu)(首先試探性執(zhí)行語句1,若執(zhí)行過程中有錯,將錯誤信息賦給保留的lasterr變量,并終止這段語句的執(zhí)行,轉(zhuǎn)而執(zhí)行語句2。)
38、 應(yīng)將不保險但快的算法放在語句1,保險的放在語句2;或語句2說明語句1失效原因。2.4.4 試探結(jié)構(gòu) 函數(shù)是 MATLAB 編程的主流方法 除了函數(shù)外,還可以采用 M-script(M腳本文件) 文件 M-script 適合于小規(guī)模運算例:若最大值不為 10000,需修改程序?qū)?m 和 10000 值的設(shè)置,不適合于M-script2.5 MATLAB 函數(shù)的編寫2.5.1 MATLAB 語言的函數(shù)的基本結(jié)構(gòu) nargin, nargout 分別表示輸入和返回變量的實際個數(shù),此為MATLAB保留變量,只要進(jìn)入該函數(shù), MATLAB就將自動生成這兩個變量。varargin, varargout
39、輸入、輸出變量列表(可變輸入輸出個數(shù))。例:前面的要求,m, 10000 function m,s=findsum(k) s=0; m=0; while (s m1,s1=findsum(145323)m1 = 539s1 = 145530 無需修改程序 s=0; m=0;while (s1, error(Too many output arguments.); endif nargin=1, m=n; elseif nargin=0 | nargin2 error(Wrong number of input arguments.); endA1=zeros(n,m);for i=1: n f
40、or j=1:m A1(i,j)=1/(i+j-1);end, endif nargout=1, A=A1; elseif nargout=0, disp(A1); end help myhilb 產(chǎn)生A=MYHILB(N,M)或A=MYHILB(N); A=myhilb(3,4)A = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 A=myhilb(4)A = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000
41、0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 A=myhilb(3,4,5)? Error using = myhilbToo many input arguments. 例:函數(shù)的遞歸調(diào)用:階乘function k=my_fact(n)if nargin=1, error(輸入變量個數(shù)錯誤,只能有一個輸入變量); endif nargout1, error(輸出變量個數(shù)過多); endif abs(n-floor(n)eps | n1 % 如果 n1, 進(jìn)行遞歸調(diào)用 k=n*my_fact(n-1);elseif any(0
42、1=n) % 0!=1!=1 k=1;end my_fact(11)ans = 39916800 其實MATLAB提供了求取階乘的函數(shù)factorial(),其核心算法為 prod(1:n),從結(jié)構(gòu)上更簡單、直觀,速度也更快。 prod(1:11)ans = 39916800 prod(1:3:11)ans = 280例: conv( ) 可以計算兩個多項式的積用 varargin 實現(xiàn)任意多個多項式的積function a=convs(varargin) a=1; for i=1:length(varargin), a=conv(a,varargini); end P=1 2 4 0 5;
43、Q=1 2; F=1 2 3; D=convs(P,Q,F)D = 1 6 19 36 45 44 35 30 poly2sym(D)ans =x7+6*x6+19*x5+36*x4+45*x3+44*x2+35*x+302.5.2 可變輸入輸出個數(shù) E=conv(conv(P,Q),F) % 若采用 conv() 函數(shù),則需要嵌套調(diào)用E = 1 6 19 36 45 44 35 30 poly2sym(E)ans =x7+6*x6+19*x5+36*x4+45*x3+44*x2+35*x+30 G=convs(P,Q,F,1,1,1,3,1,1)G = 1 11 56 176 376 578
44、 678 648 527 315 902.5.3 inline 函數(shù)和匿名函數(shù) f=inline(sin(x.2+y.2),x,y)MATLAB 7.0(匿名函數(shù))22( , )sin()f x yxy2.6 二維圖形繪制2.6.1 二維圖形繪制基本語句構(gòu)造向量:例:選項為紅色點劃線且每個轉(zhuǎn)折點用五角星表示r-.pentagram例: x=-pi : 0.05: pi; % 以 0.05 為步距構(gòu)造自變量向量 y=sin(tan(x)-tan(sin(x); % 求出各個點上的函數(shù)值 plot(x,y) plot(x,y,r-.pentagram) x=-pi:0.05:-1.8,-1.801
45、:.001:-1.2, -1.2:0.05:1.2,. 1.201:0.001:1.8, 1.81:0.05:pi; % 以變步距方式構(gòu)造自變量向量 y=sin(tan(x)-tan(sin(x); % 求出各個點上的函數(shù)值 plot(x,y) % 繪制曲線例: x=-2:0.02:2; % 生成自變量向量 y=1.1*sign(x).*(abs(x)1.1) + x.*(abs(x) plot(-2,-1.1,1.1,2,-1.1,-1.1,1.1,1.1)圖形元素屬性獲取與修改 圖形中,每條曲線、坐標(biāo)軸、圖形窗口分別是一個對象。可用set( )函數(shù)設(shè)置對象的屬性,用get( )函數(shù)獲得對象
46、的某個屬性。這兩個語句在界面編程中特別有用。繪制繪制多根多根二維曲線二維曲線1plot函數(shù)的輸入?yún)?shù)是函數(shù)的輸入?yún)?shù)是矩陣形式矩陣形式 (1) 當(dāng)當(dāng)x是向量,是向量,y是有一維與是有一維與x同維的矩陣時,同維的矩陣時,則繪制出多根則繪制出多根不同顏色不同顏色的曲線。曲線條數(shù)的曲線。曲線條數(shù)等于等于y矩陣的另一維數(shù),矩陣的另一維數(shù),x被作為這些曲線被作為這些曲線共同的橫坐標(biāo)。共同的橫坐標(biāo)。 (2) 當(dāng)當(dāng)x,y是同維矩陣時,則以是同維矩陣時,則以x,y對應(yīng)列元素對應(yīng)列元素為橫、縱坐標(biāo)分別繪制曲線,曲線條數(shù)等為橫、縱坐標(biāo)分別繪制曲線,曲線條數(shù)等于矩陣的列數(shù)。于矩陣的列數(shù)。 (3) 對只包含一個輸入?yún)?/p>
47、數(shù)的對只包含一個輸入?yún)?shù)的plot函數(shù),當(dāng)輸函數(shù),當(dāng)輸入?yún)?shù)是入?yún)?shù)是實矩陣實矩陣時,則按列繪制每列元素時,則按列繪制每列元素值相對其下標(biāo)的曲線,曲線條數(shù)等于輸入值相對其下標(biāo)的曲線,曲線條數(shù)等于輸入?yún)?shù)矩陣的列數(shù)。參數(shù)矩陣的列數(shù)。當(dāng)輸入?yún)?shù)是當(dāng)輸入?yún)?shù)是復(fù)數(shù)矩陣復(fù)數(shù)矩陣時,則按列分別以元時,則按列分別以元素實部和虛部為橫、縱坐標(biāo)繪制多條曲線。素實部和虛部為橫、縱坐標(biāo)繪制多條曲線。2含多個輸入?yún)?shù)的含多個輸入?yún)?shù)的plot函數(shù)函數(shù)調(diào)用格式為:調(diào)用格式為:plot(x1,y1,x2,y2,xn,yn)(1)當(dāng)輸入?yún)?shù)都為向量時,)當(dāng)輸入?yún)?shù)都為向量時,x1和和y1,x2和和y2,xn和和yn分別組
48、成一組分別組成一組向量對向量對,每一組向量對的每一組向量對的長度可以不同長度可以不同。每一向量。每一向量對可以繪制出一條曲線,這樣可以在同一對可以繪制出一條曲線,這樣可以在同一坐標(biāo)內(nèi)繪制出多條曲線。坐標(biāo)內(nèi)繪制出多條曲線。(2)當(dāng)輸入?yún)?shù)有矩陣形式時,配對的)當(dāng)輸入?yún)?shù)有矩陣形式時,配對的x,y按對應(yīng)列元素為橫、縱坐標(biāo)分別繪制曲線,按對應(yīng)列元素為橫、縱坐標(biāo)分別繪制曲線,曲線條數(shù)等于矩陣的列數(shù)。曲線條數(shù)等于矩陣的列數(shù)。例例 分析下列程序繪制的曲線。分析下列程序繪制的曲線。x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*
49、pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=x1;x2;x3;y=y1;y2;y3;plot(x,y,x1,y1-1)02468101214-2-1.5-1-0.500.511.522.533具有兩個縱坐標(biāo)標(biāo)度的圖形具有兩個縱坐標(biāo)標(biāo)度的圖形在在MATLAB中,如果需要繪制出具有不同縱坐標(biāo)中,如果需要繪制出具有不同縱坐標(biāo)標(biāo)度的兩個圖形,可以使用標(biāo)度的兩個圖形,可以使用plotyy繪圖函數(shù)。調(diào)繪圖函數(shù)。調(diào)用格式為:用格式為:plotyy(x1,y1,x2,y2)其中其中x1,y1對應(yīng)一條曲線,對應(yīng)一條曲線,x2,y2對應(yīng)另一條曲線。對應(yīng)另一條曲線。
50、橫坐標(biāo)的標(biāo)度相同橫坐標(biāo)的標(biāo)度相同,縱坐標(biāo)有兩個,左縱坐標(biāo)用,縱坐標(biāo)有兩個,左縱坐標(biāo)用于于x1,y1數(shù)據(jù)對,右縱坐標(biāo)用于數(shù)據(jù)對,右縱坐標(biāo)用于x2,y2數(shù)據(jù)對。數(shù)據(jù)對。例例 用不同標(biāo)度在同一坐標(biāo)內(nèi)繪制曲線用不同標(biāo)度在同一坐標(biāo)內(nèi)繪制曲線y1=0.2e-0.5xcos(4x) 和和y2=2e-0.5xcos(x)。程序如下:程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2);01234567-0.2-01234567-2-10124圖形保
51、持圖形保持 hold on/off命令控制是保持原有圖形還是刷新原命令控制是保持原有圖形還是刷新原有圖形,不帶參數(shù)的有圖形,不帶參數(shù)的hold命令在兩種狀態(tài)之間進(jìn)命令在兩種狀態(tài)之間進(jìn)行切換。行切換。例例 采用圖形保持,在同一坐標(biāo)內(nèi)繪制曲線采用圖形保持,在同一坐標(biāo)內(nèi)繪制曲線y1=0.2e-0.5xcos(4x) 和和y2=2e-0.5xcos(x)。程序如下:程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,y1)hold ony2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);hold off012
52、34567-1.5-1-0.500.511.52例例 在同一坐標(biāo)內(nèi),分別用不同線型和顏色繪制曲線在同一坐標(biāo)內(nèi),分別用不同線型和顏色繪制曲線y1=0.2e-0.5xcos(4x) 和和y2=2e-0.5xcos(x),標(biāo)記兩曲,標(biāo)記兩曲線交叉點。線交叉點。程序如下:程序如下:x=linspace(0,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);k=find(abs(y1-y2) theta=0:0.01:6*pi; rho=5*sin(4*theta/3); polar(theta,rho) rho
53、=5*sin(theta/3); polar(theta,rho) 周期確定,可以采用試湊方法例:用不同曲線繪制函數(shù)表示正弦曲線 t=0:.2:2*pi; y=sin(t); % 先生成繪圖用數(shù)據(jù) subplot(2,2,1), stairs(t,y) % 分割窗口,在左上角繪制階梯曲線 subplot(2,2,2), stem(t,y) % 火柴桿曲線繪制 subplot(2,2,3), bar(t,y) % 條型圖繪制 subplot(2,2,4), semilogx(t,y) % 橫坐標(biāo)為對數(shù)的曲線2.6.3 隱函數(shù)繪制及應(yīng)用 隱函數(shù) 例: ezplot(x2 *sin(x+y2) +y
54、2*exp(x+y)+5*cos(x2+y) x自選 ezplot(x2 *sin(x+y2) +y2*exp(x+y)+5*cos(x2+y),-10 10)2.7 三維圖形繪制 2.7.1 三維曲線繪制 stem3(三維火柴桿型曲線), fill3(三維填充圖形), bar3(三維直方圖)等。例例 繪制三維曲線。繪制三維曲線。程序如下:程序如下:t=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,z);title(Line in 3-D Space);xlabel(X);ylabel(Y);zlabel(Z);g
55、rid on;-1-0.500.51-1-0.500.51-40-30-20-10010203040XLine in 3-D SpaceYZ例:參數(shù)方程 t=0:.1:2*pi; % 構(gòu)造 t 向量,注意下面的點運算 x=t.3.*sin(3*t).*exp(-t); y=t.3.*cos(3*t).*exp(-t); z=t.2; plot3(x,y,z), grid % 三維曲線繪制 stem3(x,y,z); hold on; plot3(x,y,z), grid2.7.2 三維曲面繪制 一般曲面繪制 mesh( )繪制網(wǎng)格圖,surf( )繪制表面圖。 其它函數(shù),光照下 surfl(
56、),等高線surfc( ),瀑布型waterfall( ) 等高線繪制 contour( ), contour3( )產(chǎn)生三維數(shù)據(jù)產(chǎn)生三維數(shù)據(jù)Matlab實現(xiàn)說明實現(xiàn)說明在在MATLAB中,利用中,利用meshgrid函數(shù)產(chǎn)生函數(shù)產(chǎn)生平面區(qū)域內(nèi)的網(wǎng)格平面區(qū)域內(nèi)的網(wǎng)格坐標(biāo)矩陣坐標(biāo)矩陣。其格式。其格式為:為:x=a:d1:b; y=c:d2:d;X,Y=meshgrid(x,y);語句執(zhí)行后,矩陣語句執(zhí)行后,矩陣X的每一行都是向量的每一行都是向量x,行數(shù)等于向量行數(shù)等于向量y的元素的個數(shù),矩陣的元素的個數(shù),矩陣Y的每一列都是向量的每一列都是向量y,列數(shù)等于向量,列數(shù)等于向量x的元素的個數(shù)。的元素的
57、個數(shù)。例例 繪制三維曲面圖繪制三維曲面圖z=sin(x+sin(y)-x/10。程序如下:程序如下:x,y=meshgrid(0:0.25:4*pi);z=sin(x+sin(y)-x/10;mesh(x,y,z);axis(0 4*pi 0 4*pi -2.5 1);024681012024681012-2.5-2-1.5-1-0.500.51例:Butterworth 濾波器 x,y=meshgrid(0:31); n=2; D0=200; D=sqrt(x-16).2+(y-16).2); % 求距離 z=1./(1+D.(2*n)/D0); mesh(x,y,z), % 計算并繪制濾波
58、器 axis(0,31,0,31,0,1) % 重新設(shè)置坐標(biāo)系,增大可讀性 surf(x,y,z) % 繪制三維表面圖 contour3(x,y,z,30) 三維等高線圖,30等高線條數(shù) 例:試?yán)L制出二元函數(shù) x,y=meshgrid(-2:.1:2); z=1./(sqrt(1-x).2+y.2)+1./(sqrt(1+x).2+y.2);Warning: Divide by zero.(Type warning off MATLAB:divideByZero to suppress this warning.)Warning: Divide by zero.(Type warning off MATLAB:divideByZero to suppress this warning.) surf(x,y,z), shading flat %修飾其顯示形式222211( , )(1)(1)zf x yxyxy xx=-2:.1:-1.2, -1.1:0.02:-0.9, -0.8:0.1:0.8, 0.9:0.02:1.1, 1.2:0.1:2; yy=-1:0.1:-0.2, -0.1:0.02:0.1, 0.2:.1:1; x,y=meshgrid(xx,yy); z=1./(sqrt(1-x).2+y.2)+1
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019-2025年消防設(shè)施操作員之消防設(shè)備高級技能題庫練習(xí)試卷B卷附答案
- 2025年度主管護(hù)師考試專項復(fù)習(xí)試題庫50題及答案(四)
- 生物熒光知識培訓(xùn)課件
- 紀(jì)錄片美麗的自然教學(xué)教案設(shè)計
- 工廠生產(chǎn)線產(chǎn)量進(jìn)度表
- 解決方案推廣計劃
- 西游記唐僧取經(jīng)之旅解讀
- 企業(yè)內(nèi)部信息安全技術(shù)保障服務(wù)合同
- 小紅帽新編故事讀后感
- 技術(shù)創(chuàng)新成果統(tǒng)計表
- 臨時工雇傭合同范本2025年度
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 地理試卷
- “艾梅乙”感染者消除醫(yī)療歧視制度-
- 2024-2025學(xué)年八年級地理下冊第七章《南方地區(qū)》檢測卷(人教版)
- 森林防火知識
- 2025年黑龍江林業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- 第二單元第1課《精彩瞬間》第2課時 課件-七年級美術(shù)下冊(人教版2024)
- 2025年公共營養(yǎng)師三級理論試題及答案
- 煤礦防治水安全質(zhì)量標(biāo)準(zhǔn)化評分表
- 2025電動自行車安全技術(shù)規(guī)范培訓(xùn)課件
- 小學(xué)語文常見的說明方法(四年級下冊第二單元)
評論
0/150
提交評論