第2章_Matlab運算基礎(chǔ)_part1_第1頁
第2章_Matlab運算基礎(chǔ)_part1_第2頁
第2章_Matlab運算基礎(chǔ)_part1_第3頁
第2章_Matlab運算基礎(chǔ)_part1_第4頁
第2章_Matlab運算基礎(chǔ)_part1_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章 Matlab運算基礎(chǔ) 主要內(nèi)容 (1 1)變量的定義及賦值、特殊變量、內(nèi)存變)變量的定義及賦值、特殊變量、內(nèi)存變 量的管理;量的管理; (2 2)矩陣及其基本運算:包括矩陣的創(chuàng)建、)矩陣及其基本運算:包括矩陣的創(chuàng)建、 矩陣元素的引用、子矩陣、矩陣的合并、矩陣元素的引用、子矩陣、矩陣的合并、 矩陣的基本運算、基本的算術(shù)函數(shù)等;矩陣的基本運算、基本的算術(shù)函數(shù)等; (3 3)數(shù)值數(shù)組、字符串數(shù)組、元胞數(shù)組和構(gòu))數(shù)值數(shù)組、字符串數(shù)組、元胞數(shù)組和構(gòu) 架數(shù)組等數(shù)據(jù)類型架數(shù)組等數(shù)據(jù)類型 2.1 概述 2.1.1 數(shù)據(jù)術(shù)語 1 1)矩陣:矩陣:由由m mn n個數(shù)組成的排成個數(shù)組成的排成m m行行n

2、n列的一個矩形列的一個矩形 的數(shù)表。數(shù)表中第的數(shù)表。數(shù)表中第i i(1(1i im)m)行第行第j(1j(1j jn)n)列的列的 數(shù)據(jù)稱為矩陣元素數(shù)據(jù)稱為矩陣元素 。0 00 0的的矩陣稱為空矩陣矩陣稱為空矩陣()() 2 2)標量標量 :1 11 1的矩陣,即為只含一個數(shù)的矩陣。的矩陣,即為只含一個數(shù)的矩陣。 3 3)向量:向量:1 1n n或或n n1 1的矩陣,即只有一行的或者一的矩陣,即只有一行的或者一 列的矩陣。只有一行的矩陣稱為行向量,只有一列列的矩陣。只有一行的矩陣稱為行向量,只有一列 的矩陣稱為列向量。的矩陣稱為列向量。數(shù)表中第數(shù)表中第i i(1in(1in) )個數(shù)據(jù)稱個數(shù)

3、據(jù)稱 為為向量向量元素元素。 4 4)數(shù)組:數(shù)組:矩陣的延伸,一般指多維數(shù)組,其中標量、矩陣的延伸,一般指多維數(shù)組,其中標量、 向量和矩陣都是數(shù)組的特例。向量和矩陣都是數(shù)組的特例。 2.1.2 數(shù)據(jù)類型 數(shù)據(jù)類型包括數(shù)據(jù)類型包括數(shù)值型、字符串型、元胞型、構(gòu)架型數(shù)值型、字符串型、元胞型、構(gòu)架型 等。數(shù)值型有單精度型、雙精度型和整數(shù)型。整數(shù)等。數(shù)值型有單精度型、雙精度型和整數(shù)型。整數(shù) 型有型有uint8,uint16,uint32uint8,uint16,uint32和和uint64uint64等無符號型和等無符號型和 int8int8,int16int16,int32int32和和int64in

4、t64等符號型整數(shù)。等符號型整數(shù)。 數(shù)值型數(shù)據(jù)可以用帶小數(shù)點的形式和科學計數(shù)法表數(shù)值型數(shù)據(jù)可以用帶小數(shù)點的形式和科學計數(shù)法表 示,數(shù)值的表示范圍是示,數(shù)值的表示范圍是1 10-309 0-309 1010+309 +309。 。 -20-20、1.251.25、2.88e-56(2.88e-56(表示表示2.882.881010-56 -56) )、 、 7.68e204(7.68e204(表示表示7.687.681010204 204) ) 都是合法的數(shù)據(jù)表示。都是合法的數(shù)據(jù)表示。 一般在計算時一般在計算時采用雙精度型,在輸出時有多種數(shù)值顯示采用雙精度型,在輸出時有多種數(shù)值顯示 格式可供選擇

5、。格式可供選擇。 數(shù)值顯示的格式可通過format format 命令設(shè)置 常用的格式有: format shortformat short 默認設(shè)置,以默認設(shè)置,以5 5位數(shù)字形式輸出位數(shù)字形式輸出 format longformat long 以以1515位十進制數(shù)形式輸出位十進制數(shù)形式輸出 format short eformat short e 以以5 5位十進制數(shù)加指數(shù)形式輸出位十進制數(shù)加指數(shù)形式輸出 format long eformat long e 以以1616位十進制數(shù)加指數(shù)形式輸出位十進制數(shù)加指數(shù)形式輸出 format short gformat short g 從從for

6、matformat short short和和format format shortshort e e 中自動選擇中自動選擇 最佳輸出形式最佳輸出形式 format hex format hex 以以1616位十六進制數(shù)形式輸出位十六進制數(shù)形式輸出 format rat format rat 以近似分數(shù)形式輸出以近似分數(shù)形式輸出 2.2 變量 2.2.1 變量的命名 變量的命名規(guī)則為: 1 變量名必須以字母開頭,變量名的組成可以是任 意字母、數(shù)字或者下劃線,但不能含有空格和標 點符號。 2 關(guān)鍵字和函數(shù)名不能作為變量名。 3 變量名不能超過63個字符。 4 變量名區(qū)分字母的大小寫,即大小寫敏感

7、。 2.2.2 變量的賦值 MATLAB賦值語句有兩種格式: (1) 變量=表達式 (2) 表達式 %將表達式的值賦給預(yù)設(shè)變量ans 一般地,運算結(jié)果在命令窗口中顯示出來。如果 在語句的最后加分號,那么,MATLAB僅僅執(zhí)行賦 值操作,不再顯示運算的結(jié)果。 如果表達式太復(fù)雜一行寫不下,可以加上續(xù)行符 ()并按回車鍵,然后再下一行接著寫。 在MATLAB語句后面可以加上注釋,注釋以%開頭, 后面是注釋的內(nèi)容。 例2-12-1 在命令窗口輸入下述語句,并按回車鍵執(zhí) 行,分別給變量a a、b b、c c賦值: a=1 %a為標量為標量 b=0 1 %b為行向量為行向量 c=1 2;3 4;5 6 %

8、c為矩陣即二維數(shù)組為矩陣即二維數(shù)組 2.2.3 特殊變量(預(yù)定義變量) epseps MATLAB MATLAB定義的正的極小值定義的正的極小值2.2204e-162.2204e-16 realmaxrealmax 最大的正實數(shù)最大的正實數(shù)1.7977e+3081.7977e+308 realminrealmin 最小的正實數(shù)最小的正實數(shù)2.2251e-3082.2251e-308 pi pi 內(nèi)建的內(nèi)建的值值 i i, j, j 虛數(shù)單位虛數(shù)單位i i=j=j= infinf NaNNaN 無法定義一個數(shù)目無法定義一個數(shù)目 narginnargin 函數(shù)輸入?yún)?shù)個數(shù)函數(shù)輸入?yún)?shù)個數(shù) narg

9、outnargout 函數(shù)輸出參數(shù)個數(shù)函數(shù)輸出參數(shù)個數(shù) flops flops 浮點運算次數(shù)浮點運算次數(shù) 1 2.2.4 內(nèi)存變量的管理 1. 內(nèi)存變量的顯示與刪除 1 1)whowho 用于顯示在用于顯示在MATLABMATLAB工作空間中已工作空間中已 經(jīng)駐留的變量名清單。經(jīng)駐留的變量名清單。 2 2)whoswhos 在給出變量名的同時,還給出它們在給出變量名的同時,還給出它們 的大小、所占字節(jié)數(shù)及數(shù)據(jù)類型等的大小、所占字節(jié)數(shù)及數(shù)據(jù)類型等 信息。信息。 3 3)clearclear 刪除刪除MATLABMATLAB工作空間中的變量。注工作空間中的變量。注 意,特殊變量不能被刪除意,特殊變

10、量不能被刪除。 例2-22-2 查詢例2-12-1中語句執(zhí)行后工作空間中的變量 情況。 Name Size Bytes Class a 1x1 8 double array b 1x2 16 double array c 3x2 48 double array Grand total is 10 elements using 72 bytes 2. 工作空間瀏覽器 工作空間瀏覽器窗口用于工作空間瀏覽器窗口用于顯示所有顯示所有MATLABMATLAB工作空工作空 間中的變量名、數(shù)據(jù)結(jié)構(gòu)、類型、大小和字節(jié)數(shù),間中的變量名、數(shù)據(jù)結(jié)構(gòu)、類型、大小和字節(jié)數(shù), 也可以對變量進行觀察、編輯、提取和保存。也可

11、以對變量進行觀察、編輯、提取和保存。 例例2.12.1 語句執(zhí)行后工作空間瀏覽器窗口如圖語句執(zhí)行后工作空間瀏覽器窗口如圖2-12-1 3. 內(nèi)存變量文件 利用利用MATMAT文件可以把文件可以把MATLABMATLAB工作空間中的一些有用工作空間中的一些有用 變量長久地保留下來。變量長久地保留下來。MATMAT文件的生成和調(diào)入由文件的生成和調(diào)入由 savesave和和loadload命令來完成命令來完成 (1)save的格式: save 文件名 變量名表 -append -ASCII 功能:把工作空間中的變量保存到MAT文件中。- append表示添加方式; -ASCII表示數(shù)據(jù)格式為 ASC

12、II碼形式,默認為二進制格式。 例如: save mydata1 save mydata2 a b save mydata2 c -append (2) load的格式: load 文件名 變量名表 -ASCII 功能:將MAT文件中保存的變量加載到Matlab工作 空間中。參數(shù)含義同save。 例如: load mydata1 load mydata1 a b 2.3 數(shù)值數(shù)組 2.3.1 數(shù)值數(shù)組的建立數(shù)值數(shù)組的建立 1 1 直接輸入法直接輸入法 將矩陣的元素用方括號括起來,按矩陣行的順序 輸入各元素;同一行的元素間用逗號或空格隔開,同一行的元素間用逗號或空格隔開, 行與行之間用分號或回車

13、鍵隔開行與行之間用分號或回車鍵隔開。 元素可以是數(shù)值或表達式元素,表達式可以由數(shù)元素可以是數(shù)值或表達式元素,表達式可以由數(shù) 字、變量、運算符和函數(shù)等組成字、變量、運算符和函數(shù)等組成。 例2-4 在命令窗口輸入 A=1,2,3; 4 5 6;7 8 9 %注意:若在賦值語句后 加分號,則只執(zhí)行賦值操作而不顯示結(jié)果。 例2-5 x=-1.3 1+2+3 sqrt(5) 注意:數(shù)組元素也可以是復(fù)數(shù)。 例2-6 c=1+2i, 2+3i; 2-1i, 3-2i 2. 等間隔向量的生成 (1)冒號表達式 格式1 x1:dx:x2 格式2 x1:x2 說明: 初值x1、增量dx和終值x2分別表示開始值、步

14、長 和結(jié)束值。增量可為負值, 省略時則默認增量為 1;當增量省略或增量0而初值終值時為空向 量,當增量0而初值終值時也為空向量。 例2-7 t1=0:0.02:1 t2=5:-1:2 t3=2:-1:3 %結(jié)果t3為空矩陣 t4=1:2:5; 1:3:7 (2) 使用linspace和logspace函數(shù)生成向量 linspace函數(shù)的格式: linspace(a,b,n) 功能:生成從a到b之間線性等分的n個元素 的行向量(n的默認中為100) 。 logspace函數(shù)的格式: logspace(a,b,n) 功能:生成從10a到10b之間按對數(shù)等分的n個 元素的行向量(n的默認中為50)

15、。 例2-8 2-8 用linspacelinspace和logspacelogspace函數(shù)生成向量 t1=linspace(0,2*pi,5) x=linspace(1,8,1) y=logspace(0,2,3) 3. 利用Matlab內(nèi)部函數(shù)產(chǎn)生矩陣 函數(shù)庫: elmat 幾個產(chǎn)生特殊矩陣的函數(shù):zeros、ones、 eye、rand、randn。 注:Matlab 7.7.0版本中,rand和randn在函 數(shù)庫randfun中。 這幾個函數(shù)的調(diào)用格式相似,下面以產(chǎn)生零矩 陣的zeros函數(shù)為例進行說明。其調(diào)用格式是: zeros(n) 產(chǎn)生nn零矩陣 zeros(m,n) 產(chǎn)生m

16、n零矩陣。 zeros(size(A) 產(chǎn)生與矩陣A同樣大小的零矩 陣 例1 zeros, ones, eye的用法 a1=zeros(2) a2=zeros(2,3) b1=eye(3) b2=eye(3,4) c1=ones(3) c2=ones(3,4) c3=ones(size(a2) 函數(shù)rand用于產(chǎn)生0, 1之間均勻分布的隨機數(shù); randn用于產(chǎn)生服從標準正態(tài)分布的隨機數(shù)(均值為 零,標準差為1) 例2 r1=rand %產(chǎn)生一個0, 1之間均勻分布的隨機數(shù) r2=rand(3) %產(chǎn)生元素在0, 1之間均勻分布的3x3的隨機數(shù)矩陣 r3=rand(3,4) % 產(chǎn)生3x4的0

17、, 1之間均勻分布的隨機數(shù)矩 陣 例3產(chǎn)生-5,5之間均勻分布的3x4的隨機矩陣 r4=10*rand(3,4)-5 或r4=5-10*rand(3,4) 例4 產(chǎn)生1-10之間均勻分布的整數(shù)。 r=round(rand*9+1) 例5產(chǎn)生3x4階均值為3,方差為5的正態(tài)分布的隨機 矩陣 r5=randn(3,4)*sqrt(5)+3 另外幾個創(chuàng)建特殊矩陣的函數(shù): 函數(shù)diag 格式:X=diag(v) 功能:1)若v為向量,則產(chǎn)生以v中元素為主對角 線元素的對角矩陣。2)若v為矩陣,則提取v的主 對角線元素(返回一個向量)。 格式:X=diag(v,k) 功能:1)若v為向量,則產(chǎn)生上的 元

18、素為v中元素的對角矩陣。2)若v為矩陣,則提 取v的上的元素(返回一個向量)。 例6 diag函數(shù)的使用 v=2 -10 8 A=diag(v) A1=diag(v,1) A2=diag(v,-1) X=rand(3) d=diag(X) d1=diag(X,1) d1=diag(X,-1) 利用diag函數(shù)可以得到復(fù)雜的矩陣,例如: v=1 2 3 4; v1=7 8 9; c=diag(v)+diag(v1,1) 例7 產(chǎn)生主對角線元素為4,相鄰兩條次對角 線元素均為1,其它元素為0的n階方陣(n=10)。 n=10; v=4*ones(1,n); v1=ones(1,n-1); A=di

19、ag(v)+diag(v1,1)+diag(v1,-1) 函數(shù)blkdiag 格式:A=blkdiag(A1,A2,An) 功能:生成如下形式的分塊對角矩陣 A1 0 0; 0 A2 0; ; 0 0 An 函數(shù)triu 格式:A=triu(X) 功能:提取矩陣X的主對角線及以上的元素, 生成上三角矩陣A。 格式:A=triu(X,k) 功能:提取矩陣X的第k條對角線及以上的 元素,生成上三角矩陣A。 函數(shù)tril 格式:A=tril(X) 功能:提取矩陣X的主對角線及以下的元素, 生成下三角矩陣A。 格式:A=tril(X,k) 功能:提取矩陣X的第k條對角線及以下的 元素,生成下三角矩陣A

20、。 函數(shù)magic用于生成模方矩陣。 例如: X=magic(7); U=triu(X) U1=triu(X,1) U2=triu(X,-1) L=tril(X) L1=tril(X,2) L2=tril(X,-2) 生成用于專門學科的一些特殊矩陣的函數(shù) 1) vander生成范德蒙矩陣 2) hilb 生成希爾波特矩陣 3) invhilb 生成希爾波特矩陣的逆 4)toeplitz 生成托普利茲矩陣 5)compan 生成伴隨矩陣 6)pascal 生成帕斯卡矩陣 7)hadamard 生成哈達瑪矩陣 數(shù)組的創(chuàng)建(cont.) 4. 通過load命令或選擇FileImport Data命令

21、加載.mat文件來創(chuàng)建矩陣 5. 在M文件中創(chuàng)建矩陣(在第3章介紹)。 2.3.2 數(shù)組元素的標識 Matlab既允許對數(shù)組作為整體進行賦值和操作, 也允許對數(shù)組的單個元素進行賦值和操作,還 允許對矩陣的部分元素進行賦值和操作。 1. 向量元素的標識 設(shè)v 是向量,則v(i)表示向量v的第i個元素。 注意:Matlab中數(shù)組下標從1開始。 例如: x=1:2:9; x3=x(3);x5=x(end) x(3)=10 2. 矩陣元素的標識 (1) 全下標方式: A(i,j)表示矩陣A中位于第i行、第j列的元 素。 例如:設(shè)A=1,2;3,4;5,6 a12=A(1,2); x=A(1,1)+A(

22、1,2); A(1,2)=10 A(3,3) %出錯:下標越界 A(2,4)=9 %擴大數(shù)組,然后再賦值 (2) 單下標方式 也可以根據(jù)矩陣元素在內(nèi)存中的存儲次序(序號)來 引用矩陣元素。注意:在Matlab中矩陣的書寫按行的 順序書寫,但在內(nèi)存中,按照列的順序存儲! 例如:A=1,2,3;4,5,6;7,8,9 在內(nèi)存中的順序為1,4,7,2,5,8,3,6,9 而A(:)表示由A中所有元素按照在內(nèi)存中的存儲次序 生成的列向量。 因此,A(1)是1, A(2)是4,A(3)是7,A(4)是2,依 此類推,A(9)是9。 一般地,對mxn的矩陣A,a(i,j)對應(yīng)的單下標(也成 為序號,Ind

23、ex)為ind=m*(j-1)+I (3) 邏輯下標方式(在第3章介紹) 2.3.3 子數(shù)組 子數(shù)組是從數(shù)組中取出一部分元素所構(gòu)成的數(shù)組。子數(shù)組是從數(shù)組中取出一部分元素所構(gòu)成的數(shù)組。 通常可用全下標、單下標和邏輯下標取子數(shù)組。通??捎萌聵恕蜗聵撕瓦壿嬒聵巳∽訑?shù)組。 1) A1) A為向量,例如:為向量,例如: A=2:2:20;A=2:2:20; A(1:3), A(4:end)A(1:3), A(4:end) A(2:2:10)A(2:2:10) A(3 4 5),A(5 4 3),A(10:-1:1)A(3 4 5),A(5 4 3),A(10:-1:1) A(1 1 1)A(1 1

24、1) 2) A為矩陣,例如:在命令窗口輸入以下語句觀察執(zhí)行結(jié)果 A=1 2 3 4;5 6 7 8;9 10 11 12; A(1,:) %表示提取A的第1 行 A(:,end) %表示提取A的最后1 列 A(1:2:4,:) %同 A(1 3,:) 表示提取A的第1,3 行 A(3 1,: ) %表示提取A的第3行和第1行(行的順序和A(1 3,:)不同 A(3:-1:1,:) % 相當于flipud(A) A(1 1 1,:) A(1:3 1:3, :) A(:,2:2:end) % 同A(:,2 4)表示提取A的第2,4列 A(:,4 2) %表示提取A的第4 列和第2列(列的順序和A(

25、:,2 4) 不同) A(1 3,2 4) A(1 2,2 3 4) A(1 2,2 3 1) 對于矩陣,也可以利用單下標(序號)來定義子 矩陣(結(jié)果為向量,即一維數(shù)組),例如: A=1 2 3 4;5 6 7 8;9 10 11 12 A(1:6) %為行向量 S=1 4 7 10 A(S) %為行向量,同A(1 4 7 10) A(:) %為列向量 2.3.4 數(shù)組元素的賦值 1. 1. 全元素方式全元素方式 格式: a(:)=b 功能:給矩陣a的所有元素賦值。1)當b為標量時, 將矩陣a的所有元素賦值為b;2) 當b不是標量時, 要求數(shù)組b的元素個數(shù)必須等于矩陣a的元素個數(shù), 但行列數(shù)可

26、以不相等。 例如: A=zeros(3,4); A(:)=2; %將A的所有元素賦值為2 %注意: 若寫成A=2則含義不同,賦值后A成為一 個標量 A(:)=2*ones(3,4) %結(jié)果同上 A(:)=2*ones(1,12) %結(jié)果同上 b=1:12; A(:)=b %注意: 如果寫成A=b,則含義不同,賦 值后A成為一個行向量! 2. 子數(shù)組方式(部分元素的賦值) 1)單下標方式: 格式:A(Indexes)=B 功能:給矩陣A的部分元素賦值,其中,Indexes 為標量或向量(用于指定待賦值元素的序號)。 注意:當A為矩陣時,其單下標(序號)不能越界。 當B為標量時,表示將A的指定元素

27、均賦值為B; 當B不為標量時,要求B的元素個數(shù)必須等于A的待 賦值的元素個數(shù)(但行列數(shù)可以不相等)。 例1在命令窗口輸入以下命令,觀察執(zhí)行的結(jié)果 1) a=zeros(3,4); a(1:6)=1; a(7:12)=7:12; 2) A=zeros(2,4); A(:)=1:8; s=2 3 5; A(s) Sa=10 20 30; A(s)=Sa 2)全下標方式 格式:A(Rows, Cols)=B 功能:給矩陣A的部分元素賦值。其中, Rows和 Cols 均為標量或向量,分別指定待賦值元素所在 的行和列。 當B為標量時,表示將A的指定元素均賦值為B; 當B不為標量時,要求矩陣B的行、列數(shù)

28、必須和左 邊子矩陣的行、列數(shù)完全一致。 例2在命令窗口輸入以下命令,觀察執(zhí)行的結(jié)果 a=zeros(3,4) a(1:2,1:2)=eye(2) a(1:2,3:4)=2 a(4,5)=10 %執(zhí)行后a擴為4行5列 a(5,:)=-1 %增加第5行 a(:,6)=-1 %增加第6列 a(6,7,8,9,10)=ones(2,3) %執(zhí)行后a擴為7 行10列 說明:在Matlab中,可以在事先未對向量或矩陣 進行定義、初始化或賦值的情況下直接對向量或 矩陣元素賦值。 例3在命令窗口輸入以下命令,觀察執(zhí)行結(jié)果 clear a(1)=1,a(2)=2,a(3)=3 b(5:6)=2 3 c(3,4,

29、5,6,7)=ones(2,3) d(:,2)=1:6 e(3,:)=1:6 f(1,:)=1,f(2,:)=2,f(3,:)=3 矩陣的組合與擴展 例1在命令窗口輸入以下命令,觀察執(zhí)行結(jié)果 A=magic(3) B=A zeros(size(A) ; ones(size(A) A 注:將幾個矩陣放在內(nèi),水平連接用空格或逗 號隔開,A B或A,B也可以寫成horzcat(A,B); 垂直連接用分號或回車鍵隔開,A ; B或 A B 也可以寫成vertcat(A,B)。 例2在命令窗口輸入以下命令,觀察執(zhí)行結(jié)果 A= A=A;ones(1,3) %沿行的方向擴展 A=A;2*ones(1,3)

30、%沿行的方向擴展 A=A;3*ones(1,3) %沿行的方向擴展 A=A eye(3) %沿列的方向擴展 A=A zeros(3) %沿列的方向擴展 B=1:9 A(4,:)=B %通過賦值擴展 C=ones(4,2) A(:,10:11)=C %通過賦值擴展 通過矩陣重復(fù)平鋪產(chǎn)生大矩陣 函數(shù)repmat 格式:repmat(A, row,col) 或repmat(A, row,col) 功能:將矩陣A沿行和列的方向分別重復(fù)row和 col次。 說明: repmat(A,2,3)和A A A; A A A相同。 例 在命令窗口輸入以下命令,觀察執(zhí)行結(jié)果 a=repmat(5,2,3) b1=

31、1:5 b=repmat(b1,3,2) c1=eye(2) c=repmat(c1,2 3) 矩陣的重組 矩陣的重組是建立新矩陣的一種特殊方式。 函數(shù):reshape 格式:B=reshape(A,m,n)或reshape(A,m,n) 功能:返回由矩陣A的元素組成的mxn的矩陣B (注意:矩陣A不發(fā)生變化) 注意:在MATLAB中,矩陣元素按列存儲,即首 先存儲矩陣的第1列元素,然后存儲第2列元 素,一直到矩陣的最后一列元素。由 reshape函數(shù)得到的新矩陣和原矩陣的元素個 數(shù)、存儲順序、對應(yīng)元素的值都完全相同(邏 輯結(jié)構(gòu)不同,但存儲結(jié)構(gòu)完全相同)。 例:在命令窗口輸入以下命令,觀察執(zhí)行

32、結(jié)果 a=1:12 A1=reshape(a,2,6) A1(:) A2=reshape(a,3,4) A2(:) 2.3.5 數(shù)組元素的刪除 通過賦值為空(通過賦值為空(),可以實現(xiàn)刪除若干行),可以實現(xiàn)刪除若干行 元素、若干列元素和整個數(shù)組。元素、若干列元素和整個數(shù)組。 例:例:A=1 2 3 4;5 6 7 8;9 10 11 12;A=1 2 3 4;5 6 7 8;9 10 11 12; A A=A zeros(3); ones(2,4) ones(2,3)=A zeros(3); ones(2,4) ones(2,3) 刪除第刪除第4 4行和第行和第5 5行:行: A(4A(4,5

33、,:)=5,:)= 再刪除第再刪除第5-75-7列:列: A(A(:,5:7)=,5:7)= A(10:12)=A(10:12)=% %再刪除第再刪除第10-1210-12個元素,個元素,矩陣矩陣A A變?yōu)樾邢蛄孔優(yōu)樾邢蛄?A= %A= %刪除刪除A A的所有元素,矩陣的所有元素,矩陣A A變?yōu)榭站仃囎優(yōu)榭站仃?注意區(qū)分空矩陣和零矩陣:注意區(qū)分空矩陣和零矩陣: 空矩陣是空矩陣是0 00 0的數(shù)組,而零矩陣是元素為零的的數(shù)組,而零矩陣是元素為零的m mn n的的 數(shù)組。數(shù)組。 2.3.6 高維數(shù)組 1. 三維數(shù)組的建立 (1) “全下標”元素賦值方式 例 1)clear; A(2,2,2)=1

34、%單元素賦值創(chuàng)建2x2x2 數(shù)組 A(3,3,3)=1 %賦值后,A擴展為3x3x3的數(shù)組 2)clear; A(2,5,:)=1:3 %子數(shù)組賦值創(chuàng)建2x5x3 數(shù)組 3) clear; b(:,:,1)=1 1;1 1 b(:,:,2)=2 2; 2 2 %也可以寫成b(:,:,2)=2, 結(jié)果相同 b(:,:,3)=3 3;3 3 %也可以寫成b(:,:,3)=3, 結(jié)果相同 三維數(shù)組的建立(cont.) (2) 對二維矩陣進行擴充得到三維矩陣 例 b=1 1;1 1 b(:,:,2)=2 2; 2 2 b(:,:,3)=3 3;3 3 (3) 將若干個同樣大小的二維矩陣進行組合得到 三

35、維矩陣。 elmat函數(shù)庫專門提供了將一系列數(shù)組沿著特定的 維連成一個數(shù)組的函數(shù)cat。 函數(shù)cat 格式: cat(d, A1,A2,An) 功能:將一系列數(shù)組A1,A2,An沿第d維連接成一 個數(shù)組(對第d維進行擴展)。 說明:若A1,A2,An 為矩陣,則 cat(1,A1,A2,An)和A1;A2;An,即 vertcat(A1,A2,An)相同; cat(2,A1,A2,An)和A1 A2 An即 horzcat(A1,A2,An)相同; A=cat(3, ,A1,A2,An)則和“A(:,:,1)=A1; A(:,:,2)=A2; A(:,:,n)=An”相同 例 在命令窗口輸入以

36、下命令,觀察執(zhí)行結(jié)果 B1=ones(2,3) B2=repmat(2,2,3) B3=repmat(3,2,3) A1=cat(1,B1,B2,B3) %等價于A1=B1;B2;B3 %即A1=vertcat(B1,B2,B3) A2=cat(2,B1,B2,B3) %等價于A2=B1,B2,B3 %即A2=horzcat(B1,B2,B3) A3=cat(3,B1,B2,B3) 三維數(shù)組的建立(cont.) (4)利用函數(shù)zeros,ones,rand,randn等生成函數(shù) 直接創(chuàng)建 例如:a=zeros(2,3,4) (5) 通常,先用函數(shù)zeros定維、初始化,然后再 對其元素進行賦值

37、。 2. 多維數(shù)組的信息 ndims(A) %返回矩陣A的維數(shù) n1,n2,nm=size(A) 或者 ns=size(A) %返 回矩陣A各維的大小,其中nk或ns(k)是第k維的大 小 nk=size(A,k) %返回矩陣A第k維的大小 numel(A) %返回矩陣A中元素的個數(shù) length(V) %主要用于向量,給出向量V的長 度;若用于矩陣A, length(A)給出行數(shù)和列數(shù)中 的較大者,即ength(A)=max(size(A) ndims, size, numel函數(shù)的使用舉例 例 在命令窗口輸入以下命令,觀察執(zhí)行結(jié) 果 X=1:10; ndims(X), size(X), l

38、ength(X) Y=X;ndims(Y), size(Y), length(Y) A=zeros(3,5); ndims(A), ns=size(A) m n=size(A) n1=size(A,1),n2=size(A,2) B=rand(2,10,3); ndims(B) ns=size(B) m n p=size(B) numel(B) length(B) 2.4 稀疏數(shù)組 2.4.1 數(shù)組元素的存儲 在Matlab中,數(shù)組有兩種存儲方式: 1)完全存儲方式將數(shù)組的所有元素按列存儲 2)稀疏存儲方式僅存儲矩陣所有非零元素及其 位置,即行號和列號。 以稀疏存儲方式存儲的數(shù)組稱為稀疏數(shù)組。

39、 有兩方面的含義:1)數(shù)組的零元素較多; 2)采用稀疏存儲方式。 2.4.2 稀疏數(shù)組的建立 函數(shù)庫sparfun中提供了一系列以不同方式建立稀 疏矩陣的函數(shù)。稀疏矩陣建立后與普通的數(shù)組數(shù) 組的使用方法類似。 1. 轉(zhuǎn)換函數(shù) 完全存儲方式和稀疏存儲方式可以相互轉(zhuǎn)換。將 完全存儲方式轉(zhuǎn)化為稀疏存儲方式適用于含有大 量零元素的矩陣,轉(zhuǎn)化函數(shù)為sparse。 格式: 功能:將矩陣S轉(zhuǎn)化為稀疏存儲方式的矩陣。當矩 陣S是稀疏存儲方式時,則相當于A=S sparse函數(shù)的其它調(diào)用格式 格式: 功能:生成一個mxn的所有元素均為0的稀疏矩陣。 格式: 功能:建立一個max(u)行、max(v)列并以S為稀

40、疏 元素的稀疏矩陣,其中,u,v,S是三個等長的向量, 是要建立的稀疏矩陣的非零元素,u(i),v(i)分 別是S(i)的行和列下標。 將稀疏存儲方式的矩陣轉(zhuǎn)化為完全存儲方式的矩 陣的轉(zhuǎn)換函數(shù)是full 格式: 功能:返回和稀疏存儲矩陣對應(yīng)的完全存儲矩 陣。 演示sparse和full的功能 例2-28在命令窗口輸入以下命令,觀察執(zhí)行結(jié) 果 u=1:4 v=3:6 S=0.1:0.1:0.4 spa=sparse(u,v,S) A=full(spa) 2.生成函數(shù) 為方便稀疏矩陣的使用,Matlab還提供了一些稀疏 矩陣的生成函數(shù):spconvert、spdiags和speye等。 spcon

41、vert函數(shù) 格式: 功能:創(chuàng)建由矩陣所描述的一個稀疏存儲矩陣。 其中,為一個mx3或mx4的矩陣,其每一行表示一 個非零元素(m是非零元素的個數(shù)), A(i,1): 第i個非零元素的行下標 A(i,2): 第i個非零元素的列下標 A(i,): 第i個非零元素值的實部 A(i,): 第i個非零元素值的虛部,若矩陣的全 部元素都是實數(shù),則無需第四列 演示spconvert函數(shù)的功能 例2-29在命令窗口輸入以下命令,觀察執(zhí)行結(jié) 果 1)A=1 2 3;3 4 5;6 7 8 B=spconvert(A) 2)A=1 2 3 4;3 4 5 6;6 7 8 9 B=spconvert(A) spd

42、iags函數(shù)產(chǎn)生帶狀稀疏矩陣 格式:A=(B,d,m,n) 功能:返回帶狀稀疏矩陣A。參數(shù)m,n為原帶狀矩 陣的行數(shù)與列數(shù)。B為rxp階矩陣,這里 r=min(m,n), p為原帶狀矩陣所有非零對角線的條 數(shù),矩陣B的第列為第i條非零對角線; d是長 度為p的向量,d(i)是第i條非零對角線相對于主 對角線的位置。 關(guān)于spdiags的其它使用格式(自己查幫助) 演示spdiags的功能 例創(chuàng)建一個帶寬為3, 主對角線元素均為4,相 鄰的兩條次對角線元素均為1的n階稀疏方陣(n取 10)。程序如下: n=10; b0=repmat(4,n,1);b1=repmat(1,n,1);b2=b1;

43、B=b0 b1 b2; d=0 1 -1; A=spdiags(B,d,n,n) F=full(A) 函數(shù)eye, rand和randn產(chǎn)生完全存儲方式的矩陣, 對應(yīng)的稀疏矩陣函數(shù)是speye, sprand和 sprandn 格式: speye(m,n) 功能:返回一個mxn的稀疏存儲方式的單位矩陣 speye函數(shù)舉例 例2-31 分析下列語句的功能 spa=speye(4) %等價于spa=speye(4,4) spa(2,1)=-2 spa(2,2)=0 2.5 矩陣和數(shù)組的算術(shù)運算 Matlab中定義了矩陣運算和數(shù)組運算。 矩陣運算以矩陣作為運算要素,數(shù)組運算以數(shù)組元 素作為運算要素。

44、 利用help ops命令可以查看Matlab中的運算符及特 殊符號的用法。 2.5.1 基本矩陣運算 1. 加減運算 C=A+B 也可以寫作 C=plus(A,B) C=A-B也可以寫作 C=minus(A,B) C=+A 也可以寫作 C=uplus(A) C=-A 也可以寫作 C=uminus(A) 注意: 1) 如果A和B中有一個是標量,則用該標量和矩陣 的每個元素分別進行運算。 2) 否則,只有當size(A)=size(B)時才可以進 行加減運算。 2. 乘法運算 矩陣乘法運算符為* C=A*B 也可以寫作C=mtimes(A,B) 注意: 1) 如果A和B中有一個是標量,則用該標量

45、和矩陣 的每個元素分別進行運算。 2) 否則,根據(jù)線性代數(shù)知,只有當A的列數(shù)等于 B的行數(shù)時才可以進行以上運算。 3. 乘方運算 運算符: Ak 也可以寫成 mpower(A,k) 注意:A必須是方陣。當k為正整數(shù)時,表示k個 (按矩陣的乘法)相乘。 例如:A3和A*A*A結(jié)果相同 4. 除法運算 1) 矩陣左除 AB也可以寫作mldivide(A,B) 當為可逆矩陣時,AB=inv(A)*B x=Ab為線性方程組A*x=b的解 設(shè)size(A)=m,n,當mn(或mn)時, x=Ab 為線性方程組A*x=b的最小二乘(最小二范數(shù))解。 2) 矩陣右除/ A/B=A*inv(B) 也可以寫作

46、mrdivide(A,B) 當B為標量時,表示用A的每個元素除以 例2-35 求解線性方程組 程序如下: A=2 2 -1 1;4 3 -1 2;8 3 -3 4;3 3 -2 -2; b=4 6 12 6; x=Ab%等價于 x=inv(A)*b 62233 124338 6234 422 4321 4321 4321 4321 xxxx xxxx xxxx xxxx 5.矩陣的轉(zhuǎn)置 A表示矩陣的共軛轉(zhuǎn)置,A也可以寫成 ctranspose(A) A.表示矩陣的(非共軛)轉(zhuǎn)置,A.也可以寫 成transpose(A) 當A是實矩陣時, A和A.相同。 兩種不同轉(zhuǎn)置的例子 例在命令窗口輸入以下

47、命令,比較兩種轉(zhuǎn)置的 不同 clear; A=zeros(2,3); A(:)=1:6 %全元素賦值法 A=A*(1+i) A_A= A. % 數(shù)組轉(zhuǎn)置,即非共 軛轉(zhuǎn)置 A_M= A % 矩陣轉(zhuǎn)置,即共 軛轉(zhuǎn)置 類似的幾個操作 fliplr,flipud,rot90 函數(shù)fliplr用于將矩陣各列左右顛倒,flipud將 矩陣各行上下顛倒,rot90將矩陣元素繞矩陣的中 心逆時針旋轉(zhuǎn)90度。 例如: r=rand(3) b=diag(r) %提取r的主對角線元素 rr=fliplr(r) b1=diag(fliplr(r) %提取r的反對角線元素 X=magic(5),rot90(X) 向高維

48、的推廣 flipdim函數(shù) 格式:B=flipdim(A,dim) 功能:將A關(guān)于第d維翻轉(zhuǎn)得到B。dim=1, 對行下 標進行反轉(zhuǎn); dim=2, 對列下標進行反轉(zhuǎn),以此 類推。對于矩陣A,flipdim(A,1) 等價于 flipud(A), flipdim(A,2) 等價于fliplr(A)。 例如:在命令行輸入以下命令,觀察執(zhí)行結(jié)果 A(:,:,1)=round(10*rand(4);A(:,:,2)=A(:,:,1 )+1; A(:,:,3)=A(:,:,1)+2 A1=flipdim(A,1), A2=flipdim(A,2), A3=flipdim(A,3) 6. 矩陣的Kron

49、ecker乘積(張量積) Z = KRON(X,Y)Z = KRON(X,Y) 是矩陣X和Y的Kronecker張量積。 設(shè)size(X)=m,n, 則 Z=Z= X(1,1) X(1,1)* *Y X(1,2)Y X(1,2)* *Y Y X(1,n)X(1,n)* *Y;Y; X(2,1) X(2,1)* *Y X(2,2)Y X(2,2)* *Y X(2,n)Y X(2,n)* *Y;Y; X(m,1) X(m,1)* *Y X(m,2)Y X(m,2)* *Y X(m,n)Y X(m,n)* *YY 注意:注意: Kronecker乘積不滿足交換律。 Kronecker乘積舉例 例在命

50、令窗口輸入以下命令,觀察執(zhí)行結(jié)果 B=eye(2) C=reshape(1:4,2,2) X=kron(B,C) Y=kron(C,B) 2.5.2 數(shù)組運算(點運算) 在運算符* / 前面加.號表示數(shù)組運算(或稱 為點運算) A.*B也可以寫作times(A,B) C=A.B也可以寫作C=ldivide(A,B) 執(zhí)行后 C(i,j)=B(i,j)/A(i,j) C=A./B也可以寫作C=rdivide(A,B) 執(zhí)行后 C(i,j)=A(i,j)/B(i,j) A.B 也可以寫作power(A,B) 注意: 1)A和B中有一個為標量時,則用該標量分別和矩陣 的每個元素進行運算。 2)除上述

51、情況外,只有當size(A)=size(B)時A和 B才可以進行數(shù)組運算(或稱為點運算),A和B的 對應(yīng)元素進行運算。 點運算舉例 例在命令窗口輸入以下命令,觀察執(zhí)行結(jié)果 a=1 2 3 4 5,b=1 3 5 7 9 c=a.*b d=a.2, e=2.a, f=b.a g=a./b, h=a.b x=1./a 例求1100的平方、平方根和立方根 程序: M=1:100; M2=M.2; M2rt=M.(1/2); M3rt=M.(1/3); M M2 M2rt M3rt %或M; M2; M2rt; M3rt 2.5.3 矩陣的一些基本函數(shù) 1.函數(shù)庫elfun中的一些函數(shù)(基本數(shù)學函數(shù))

52、 函數(shù)庫elfun提供了各種基本的數(shù)學函數(shù),包 括三角函數(shù)、指數(shù)函數(shù)、對數(shù)函數(shù)、整數(shù)函數(shù)、 復(fù)數(shù)的基本函數(shù)等。 可以輸入help elfun命令查看有關(guān)信息。 需要注意的是: MATLAB 6.5MATLAB 6.5以前的版本三角函數(shù)的自變量和反以前的版本三角函數(shù)的自變量和反 三角函數(shù)的返回值為弧度;三角函數(shù)的返回值為弧度; MATLAB 7.0MATLAB 7.0版本中提供了三角函數(shù)的自變量和版本中提供了三角函數(shù)的自變量和 反三角函數(shù)的返回值分別為角度和弧度的兩類反三角函數(shù)的返回值分別為角度和弧度的兩類 函數(shù)。函數(shù)。 三角函數(shù)及反三角函數(shù) 三角函數(shù):sin sind sinh cos cos

53、d cosh tan tand tanh cot cotd coth sec secd sech csc cscd csch 反三角函數(shù): asin asind asinh acos acosd acosh atan atand atanh acot acotd acoth asec asecd asech acsc acscd acsch 冪函數(shù)、指數(shù)函數(shù)、對數(shù)函數(shù)等 abs 絕對值或復(fù)數(shù)的模 sign 符號函數(shù) exp 以e為底的指數(shù)函數(shù) log 自然對數(shù)(以e為底) log10 常用對數(shù)(以10為底) log2 以10為底的對數(shù) pow2 2的冪 sqrt 平方根 nthroot(x,n

54、) x的n次方根,等價于 x.(1/n) 取整與求余 round 四舍五入到整數(shù) fix 截斷取整 floor 向下取整 ceil 向上取整 mod 模除求余 rem 求余 復(fù)數(shù)的一些基本函數(shù) realreal 復(fù)數(shù)的實數(shù)部分復(fù)數(shù)的實數(shù)部分 real(b)real(b) imagimag 復(fù)數(shù)的虛數(shù)部分復(fù)數(shù)的虛數(shù)部分 imagimag(b)(b) absabs 絕對值或模絕對值或模 abs(b)abs(b) angleangle 幅角幅角 angle(b) angle(b) 結(jié)果為弧度結(jié)果為弧度 angle(b)angle(b)* *180/pi 180/pi 結(jié)果為角度結(jié)果為角度 conjc

55、onj 共軛共軛 conj(b)conj(b) 2. 函數(shù)庫specfun中的一些數(shù)學函數(shù) 特殊數(shù)學函數(shù) 函數(shù)庫specfun 中定義了一些特殊的數(shù)學 函數(shù),包括:特殊函數(shù)(例如Beta函數(shù)、 Gamma函數(shù)、誤差函數(shù)等)、數(shù)論中的一些 函數(shù)、坐標轉(zhuǎn)換函數(shù)等。 可以通過help specfun來查看有關(guān)函數(shù)的 基本信息。 數(shù)論中的一些函數(shù) isprime(n) - 判斷n是否為質(zhì)數(shù),若是返回1,否則返回 0 factor (n) - 將整數(shù)n分解質(zhì)因素 gcd(a,b) - 求整數(shù)a和b的最大公約數(shù) lcm(a,b) - 求整數(shù)a和b的最小公倍數(shù) N,D = RAT(X,tol) - 有理數(shù)逼

56、近,求的近似 有理數(shù)(tol是精度) Xstr=RATS(X,LEN) -有理數(shù)輸出,將用近似的有理 數(shù)輸出結(jié)果(為長度小于的字符串) perms(1:N) 求:N的所有排列 nchoosek(n,k) 求 k n C 坐標變換函數(shù) cart2sph - 將直角坐標轉(zhuǎn)化為球坐標 cart2pol - 將直角坐標轉(zhuǎn)化為極坐標 pol2cart - 將極坐標轉(zhuǎn)化為直角坐標 sph2cart - 將球坐標轉(zhuǎn)化為直角坐標 hsv2rgb - 將顏色的HSV表示形式轉(zhuǎn)化為RGB表示形 式 rgb2hsv - 將顏色的RGB表示形式轉(zhuǎn)化為HSV表示形 式 點積、叉積和混合積 dot(a,b) - 計算向量

57、a和b的點積 cross(a,b) - 計算三維向量a和b的叉積 dot(cross(a,b),c) -三維向量a,b,c的混合積 3. datafun函數(shù)庫中的幾個常用函數(shù) 數(shù)據(jù)分析 函數(shù)庫datafun中包含了一些基本的數(shù)據(jù)分 析與處理函數(shù),包括:基本的統(tǒng)計函數(shù)、 差分與數(shù)值微分、梯度、離散Laplacian, 相關(guān)性分析、濾波與卷積、 Fourier 變換 等 可以通過help datafun來查看有關(guān)函數(shù)的 基本信息。 基本統(tǒng)計分析函數(shù) 最大值(max)和最小值(min) max函數(shù) 基本格式:xm=max(x)或xm, i=max(x) 功能:如果x是向量,返回向量x的最大元素xm及

58、 其下標i;如果x是矩陣,則分別求矩陣X中每一列 元素的最大值及其位置(行下標) 例如:x=round(10*rand(1,10) xm ind=max(x) X=magic(3) xm ind=max(X) 問題:設(shè)是矩陣,如何分別求矩陣X每一行元素的最大 值? 格式: y=max(X,dim)或y, inds=max(X,dim) 功能:當dim=1時, max(X,1)等價于max(X);當 dim=2時,分別求矩陣X中每一行元素的最大值及其位置( 列下標)。 例如:X=magic(7); y,inds=max(X,2) 為什么要有第二個參數(shù)? 格式:Y=max(A,B) 或 Y=max

59、(A,n) 其中,A和B是標量、向量或矩陣,size(A)=size(B),n是 標量 功能:返回和同型的標量、向量或矩陣,Y的每個元素 等于和中對應(yīng)元素的較大者(或的對應(yīng)元素和n的 較大者)。 min函數(shù)的使用格式和max相同(略)。 問題:如何求矩陣中所有元素的最大值? 平均值(mean)和中值(median) mean函數(shù)求平均值 格式:y=mean(x) 功能:)若x是一個向量,則返回x中各元素的 均值;)若x是一個矩陣,則分別計算矩陣每一 列元素的均值,返回一個行向量,此時,y(j)是x 的第j列元素的均值。 格式:mean(,dim),其中,是一個矩陣 功能:當dim=1時(可省略

60、),分別計算矩陣每一 列的均值,返回一個行向量;當dim=時,分別 計算矩陣每一行的均值,返回一個列向量。 median函數(shù)求中值 數(shù)列x的中值(median): 對x中的元素從小到大排序,若length(x)為奇數(shù) ,則位于中間的那個元素的值稱為數(shù)列x的中值; 若length(x)為偶數(shù),則位于中間的兩個元素的平 均值稱為數(shù)列x的中值。 例:)求數(shù)列9,-2,5,7,12的中值 排序后為:-2,5,7,9,12,故中值為7. 2)數(shù)列3,4,5,6,7,8的中值: (5+6)/2=5.5 median函數(shù)和mean的使用格式相同。 求和(sum) sum函數(shù) 格式:y=sum(x) 功能:)

溫馨提示

  • 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

提交評論