《《MATLAB語言基礎(chǔ)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《MATLAB語言基礎(chǔ)》PPT課件.ppt(68頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、2007年3月,1,第二章 MATLAB語言基礎(chǔ),2.1 基本概念 2.2 向量運(yùn)算 2.3 矩陣運(yùn)算 2.4 數(shù)組運(yùn)算 2.5 字符串運(yùn)算,2007年3月,2,本章要求: 了解MATLAB的數(shù)據(jù)類型,理解向量、矩陣、數(shù)組、函數(shù)和表達(dá)式等基本概念,掌握向量、矩陣和數(shù)組的基本運(yùn)算法則和運(yùn)算函數(shù)的使用。,2007年3月,3,1. MATLAB數(shù)據(jù)類型,2.1 基本概念,2007年3月,4,2.1 基本概念,2. 常量與變量 特殊常量表,2007年3月,5,變量命名遵守如下規(guī)則: 變量名必須以字母開頭,且只能由字母、數(shù)字或者下劃線三類符號(hào)組成,不能含有空格和標(biāo)點(diǎn)符號(hào)(如( ) ,。% )等。 變量名
2、區(qū)分字母的大小寫。例如,“a”和“A”是不同的變量。 變量名不能超過63個(gè)字符,第63個(gè)字符后的字符被忽略,對(duì)于MATLAB6.5版以前的變量名不能超過31個(gè)字符。 關(guān)鍵字(如if、while等)不能作為變量名。 最好不要用表2.1中的特殊常量符號(hào)作變量名。 常見的錯(cuò)誤命名如f(x),y,y等。,2.1 基本概念,2007年3月,6,3.標(biāo)量、向量、矩陣與數(shù)組 各自的特點(diǎn)及相互間的關(guān)系 : (1)一維數(shù)組的數(shù)學(xué)原型是向量 ,二維數(shù)組的數(shù)學(xué)原型是矩陣 。在MATLAB中,數(shù)組的用法與一般高級(jí)語言不同,它不借助于循環(huán),而是直接采用運(yùn)算符,它有自己獨(dú)立的運(yùn)算符和運(yùn)算法則 。 (2) MATLAB將
3、矩陣引入作為基本運(yùn)算量。 (3)向量是一個(gè)數(shù)學(xué)量,它可視為矩陣的特例。 (4)標(biāo)量的提法也是一個(gè)數(shù)學(xué)概念 ,可把它當(dāng)成11階的矩陣 。 (5)二維數(shù)組和矩陣其實(shí)是數(shù)據(jù)結(jié)構(gòu)形式相同的兩種運(yùn)算量。二維數(shù)組和矩陣的表示、建立、存儲(chǔ)根本沒有區(qū)別,區(qū)別只在它們的運(yùn)算符和運(yùn)算法則不同。 (6)數(shù)組的維和向量的維是兩個(gè)完全不同的概念,2.1 基本概念,2007年3月,7,4.字符串 字符串用單引號(hào)來標(biāo)示。 如:S=I HAVE A DREAM. 字符串實(shí)際可視為一個(gè)字符數(shù)組 。,2.1 基本概念,2007年3月,8,5.運(yùn)算符,MATLAB運(yùn)算符可分為三大類: 算術(shù)運(yùn)算符:矩陣算術(shù)運(yùn)算符 、數(shù)組算術(shù)運(yùn)算符
4、 關(guān)系運(yùn)算符 邏輯運(yùn)算符,2007年3月,9,,2007年3月,10,2007年3月,11,2007年3月,12,2007年3月,13,2007年3月,14,6.命令、函數(shù)、表達(dá)式和語句,命令 : 在MATLAB中,命令與函數(shù)都組織在函數(shù)庫里,有一個(gè)專門的函數(shù)庫general就是用來存放通用命令的。 函數(shù) : 函數(shù)最一般的引用格式是: 函數(shù)名(參數(shù)1,參數(shù)2,) 表達(dá)式 : 例如:AB1 1 1 (2)單下標(biāo)方式: A(3:6)=-1 1 1 -1 (3)全元素方式:將B矩陣的所有元素全部賦值給A矩陣,即A(:)=B,不要求A、B同階,只要求元素個(gè)數(shù)相等。,二、矩陣元素表示及相關(guān)操作,20
5、07年3月,22,3. 矩陣元素的刪除 在MATLAB中,可以用空矩陣(用表示)將矩陣中的單個(gè)元素、某行、某列、某矩陣子塊及整個(gè)矩陣中的元素刪除。 例: A(2,:)=%刪除A矩陣的第2行,“:”可表示所有行或列,二、矩陣元素表示及相關(guān)操作,2007年3月,23,三、矩陣的創(chuàng)建,矩陣表示的約定 : (1)矩陣的所有元素必須放在方括號(hào)()內(nèi); (2)每行的元素之間需用逗號(hào)或空格隔開; (3)矩陣的行與行之間用分號(hào)或回車鍵分隔; (4)元素可以是數(shù)值或表達(dá)式。,2007年3月,24,1. 直接輸入法 例: x=27;y=3; A=1 2 3;4 5 6;B=2,3,4;7,8,9;12,2*6+1
6、,14; C=3 4 5 7 8 x/y 10 11 12;,三、矩陣的創(chuàng)建,2007年3月,25,2. 抽取法:抽取法是從大矩陣中抽取出需要的小矩陣(或子矩陣)。 (1)用全下標(biāo)方式 例: 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 12 13 14 15 16 B=A(1:3,2:3) B = 2 3 6 7 10 11,三、矩陣的創(chuàng)建,2007年3月,26,(2)用單下標(biāo)方式 例: A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16 A
7、 = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 B=A(4:6;3 5 7;12:14) B = 13 2 6 9 2 10 15 4 8,2007年3月,27,3. 拼接法,例: A=1 2 3;4 5 6;7 8 9,B=9 8;7 6;5 4 A = 1 2 3 4 5 6 7 8 9 B = 9 8 7 6 5 4 E=A B;B A E = 1 2 3 9 8 4 5 6 7 6 7 8 9 5 4 9 8 1 2 3 7 6 4 5
8、6 5 4 7 8 9,2007年3月,28,4. 函數(shù)法,2007年3月,29,2007年3月,30,例: A=ones(3,4),B=eye(3,4),C=magic(3) A = 1 1 1 1 1 1 1 1 1 1 1 1 B = 1 0 0 0 0 1 0 0 0 0 1 0 C = 8 1 6 3 5 7 4 9 2,2007年3月,31,5. 拼接函數(shù)和變形函數(shù)法,拼接函數(shù): cat函數(shù)的使用格式是:cat(n,A1,A2,A3,),n=1時(shí),表示沿行方向拼接;n=2,表示沿列方向拼接 repmat函數(shù)的使
9、用格式是:repmat(A,m,n),m和n分別是沿行和列方向重復(fù)拼接矩陣A的次數(shù),2007年3月,32,例: A1=1 2 3;9 8 7;4 5 6,A2=A1. A1 = 1 2 3 9 8 7 4 5 6 A2 = 1 9 4 2 8 5 3 7 6 cat(1,A1,A2,A1) %沿行向拼接 ans = 1 2 3 9 8 7 4 5 6 1 9 4 2 8 5 3 7 6 1 2 3 9 8 7 4 5 6,2007年3月,33,用變形函數(shù)生成矩陣,reshape函數(shù)的使用格式是:r
10、eshape(A,m,n),m和n分別是變形后新矩陣的行列數(shù),2007年3月,34,例: A=linspace(2,18,9) A = 2 4 6 8 10 12 14 16 18 B=reshape(A,3,3) B = 2 8 14 4 10 16 6 12 18,2007年3月,35,6. 加載法,所謂加載法是指將已經(jīng)存放在外存中的.mat文件讀入MATLAB工作空間中。這一方法的前提是:必須在外存中事先已保存了該.mat文件且數(shù)據(jù)文件中的內(nèi)容是所需的矩陣。,2007年3月,36,例: load sl2_19%從外存中加載事先保存在可搜索路徑中的數(shù)據(jù)文件sl2_19.m
11、at who%詢問加載的矩陣名稱,參見1.8節(jié)表1.8的命令 Your variables are: A A%顯示加載的矩陣內(nèi)容 A = 4 5 6 7 1 2 3 4 9 8 7 6,2007年3月,37,7. M文件法,M文件法和加載法其實(shí)十分相似,都是將事先保存在外存中的矩陣讀入內(nèi)存工作空間中,不同點(diǎn)在于加載法讀入的是數(shù)據(jù)文件(.mat),而M文件法讀入的是內(nèi)容僅為矩陣的.m文件 。,2007年3月,38,四、矩陣的代數(shù)運(yùn)算,1. 求矩陣行列式的值 求矩陣行列式的值由函數(shù)det(A)實(shí)現(xiàn) 。 例: A=3 2 4;1 -1 5;2 13,D1=det(A) A
12、= 3 2 4 1 -1 5 2 -1 3 D1 = 24,2007年3月,39,,2. 矩陣加減、數(shù)乘與乘法 矩陣的加減法、數(shù)乘和乘法可用表2.2介紹的運(yùn)算符來實(shí)現(xiàn)。 表2-2,2007年3月,40,3. 求方陣的逆矩陣 求一個(gè)n階方陣的逆矩陣遠(yuǎn)比線性代數(shù)中介紹的方法來得簡(jiǎn)單,只需調(diào)用函數(shù)inv(A)即可實(shí)現(xiàn) 。 例:求A矩陣的逆矩陣。 A=1 0 1;2 1 2;0 4 6 A = 1 0 1 2 1 2 0 4 6 format rat;A1=inv(A) A1 = -1/3 2/3 -1/6 -2 1 0 4/3 -2/3 1
13、/6,2007年3月,41,4. 矩陣的除法 左除即AB=inv(A)*B 右除即A/B=A*inv(B) 例:求線性方程組的解 x1 + 4x2 - 7x3 + 6x4 = 0 2x2 + x3 + x4 =-8 x2 + x3 + 3x4 =-2 x1 + x3 - x4 = 1 方程可化為AXB ,其中A=1 4 7 6;0 2 1 1;0 1 1 3;1 0 1 1 , X=x1;x2;x3;x4 , B0;-8;-2;1 ,X=B/A=B*inv(A),,2007年3月,42,5. 求矩陣的秩 由函數(shù)rank(A)完成 例: B=1 3 -9 3;0 1
14、 -3 4;-2 -3 9 6,rb=rank(B) B = 1 3 -9 3 0 1 -3 4 -2 -3 9 6 rb = 2,2007年3月,43,6. 求方陣的特征值與特征向量,有兩個(gè)函數(shù)可用: 一是X,eig(A) 另一是X,eigs(A) 例:求矩陣A的特征值和特征向量。 A=1 -3 3;3 -5 3;6 -6 4, X,Lamda=eig(A),2007年3月,44,7. 矩陣的乘冪與開方,矩陣的乘方有自己的運(yùn)算符() 例: A=1 -3 3;3 -5 3;6 -6 4; A3 ans = 28 -36 36 36 -44 36 72 -72 64,2
15、007年3月,45,8. 矩陣的指數(shù)與對(duì)數(shù),矩陣指數(shù)運(yùn)算的函數(shù):expm( )、expm1( )、expm2( )和expm3( )等,其中最常用的是expm(A); 而對(duì)數(shù)運(yùn)算函數(shù)則是logm(A) 例: A=1 -1 1;2 -4 1;1 -5 3 A = 1 -1 1 2 -4 1 1 -5 3 Ae=expm(A) Ae = 1.3719 -3.7025 4.4810 0.3987 -2.3495 2.9241 -2.5254 -7.6138 9.5555 Ael=logm(Ae),2007年3月,46,9. 矩陣轉(zhuǎn)置,用函數(shù)transpose(Z)實(shí)現(xiàn) 。 不論是
16、實(shí)矩陣還是復(fù)矩陣都只實(shí)現(xiàn)轉(zhuǎn)置而不做共軛變換。,2007年3月,47,2.4 數(shù)組運(yùn)算,一、多維數(shù)組元素的存儲(chǔ)次序 以一個(gè)mnl的3維數(shù)組A為例,考慮到它是由多個(gè)mn的二維數(shù)組(表)疊放而成的,如果用符號(hào)i表示每個(gè)二維數(shù)組(表)的行下標(biāo),用符號(hào)j表示每個(gè)二維數(shù)組(表)的列下標(biāo),另外再用符號(hào)k 表示A的另一維(稱為頁的)下標(biāo),那么矩陣A中第i行、第j列、第k 頁的元素就可表示為A(i,j,k )。,2007年3月,48,2007年3月,49,二、多維數(shù)組的創(chuàng)建,1. 下標(biāo)賦值法 例:創(chuàng)建一個(gè)2頁的三維數(shù)組 2. 工具陣函數(shù)法 例:用zeros、ones、rand和randn函數(shù)生成多維數(shù)組 3.
17、拼接和變形函數(shù)法 例:用cat和repmat函數(shù)創(chuàng)建3維數(shù)組,2007年3月,50,三、數(shù)組的代數(shù)運(yùn)算,1. 數(shù)組的加減、數(shù)乘與乘法 數(shù)組加減運(yùn)算的運(yùn)算符與矩陣相同 2. 數(shù)組的除法 為了與矩陣運(yùn)算相對(duì)應(yīng),數(shù)組的除法運(yùn)算也分左、右除來定義(./ ,.),2007年3月,51,3. 數(shù)組的乘冪與開方 數(shù)組的冪運(yùn)算符是. 開方運(yùn)算需借助開方函數(shù) :sqrt(A) 4. 數(shù)組的指數(shù)與對(duì)數(shù) 指數(shù)函數(shù)exp( ) 對(duì)數(shù)函數(shù)log( ),2007年3月,52,例: 求A數(shù)組的指數(shù)和對(duì)數(shù)。 A=1 2 3;4 5 6 A = 1 2 3 4 5 6 Ae=exp(A),Al=log(A) Ae
18、= 2.7183 7.3891 20.0855 54.5982 148.4132 403.4288 Al = 0 0.6931 1.0986 1.3863 1.6094 1.7918,2007年3月,53,5. 數(shù)組或矩陣的單純轉(zhuǎn)置 運(yùn)算符. 例:對(duì)復(fù)矩陣A做單純轉(zhuǎn)置運(yùn)算。 a=1 2 3;4 5 6;b=2 3 4;5 6 7; A=a+i*b A = 1.0000 + 2.0000i 2.0000 + 3.0000i 3.0000 + 4.0000i 4.0000 + 5.0000i 5.0000 + 6.0000i 6.0000 + 7.0000i B=A. B = 1.0000
19、 + 2.0000i 4.0000 + 5.0000i 2.0000 + 3.0000i 5.0000 + 6.0000i 3.0000 + 4.0000i 6.0000 + 7.0000i,2007年3月,54,四、數(shù)組的關(guān)系與邏輯運(yùn)算,1. 數(shù)組的關(guān)系運(yùn)算 例:求3階魔方矩陣中所有能被3整除的元素,并在其位置上標(biāo)1。 a=magic(3); p=mod(a,3)==0,2007年3月,55,2. 數(shù)組的邏輯運(yùn)算 ( length(Sa) ans = 49 size(Sa) ans = 1 49,2007年3月,65,2. 字符串與一維數(shù)值數(shù)組的相互轉(zhuǎn)換 例: S1=I am nobod
20、y; As1=abs(S1) As1 = 73 32 97 109 32 110 111 98 111 100 121 As2=double(S1) As2 = 73 32 97 109 32 110 111 98 111 100 121 char(As2) ans = I am nobody,2007年3月,66,3. 比較字符串 strcmp(S1,S2) 當(dāng)S1與S2完全相同時(shí),返回值為1,否則返回值為0。 例: strcmp( )的用法。 S1=I am nobody; S2=I am nobody.; strcmp(S1,S2) ans = 0 strcmp(S1,S1) ans = 1,2007年3月,67,4. 查找字符串 findstr(S,s)是從某個(gè)長(zhǎng)字符串S中查找子字符串s的函數(shù) 5. 顯示字符串 是一個(gè)原樣輸出其中內(nèi)容的函數(shù),它經(jīng)常在程序中做提示說明用,2007年3月,68,三、二維字符數(shù)組,二維字符數(shù)組其實(shí)就是由字符串縱向排列構(gòu)成的數(shù)組 。 例: S1=路修遠(yuǎn)以多艱兮,; S2=騰眾車使徑侍。; S3=路不周以左轉(zhuǎn)兮,; S4=指西海以為期 !; S=S1;S2, ;S3;S4, %此法要求每行字符數(shù)相同,不夠時(shí)要補(bǔ)齊空格 S = 路修遠(yuǎn)以多艱兮, 騰眾車使徑侍。 路不周以左轉(zhuǎn)兮, 指西海以為期!,