版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算主要內(nèi)容2.1數(shù)據(jù)類型2.2一維數(shù)組2.3二維數(shù)組2.4高維數(shù)組2.5數(shù)組操作2.6數(shù)組運(yùn)算與矩陣運(yùn)算2.7多項(xiàng)式2.8關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符2.9字符串?dāng)?shù)組2.10細(xì)胞數(shù)組2.11結(jié)構(gòu)體數(shù)組2.1引言
數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)的重要基礎(chǔ),使用合理的數(shù)據(jù)結(jié)構(gòu)去描述問(wèn)題,能夠縮短程序代碼、簡(jiǎn)化程序結(jié)構(gòu)、便于程序維護(hù)。在MATLAB里共有六種基本數(shù)據(jù)類型:雙精度型(double):雙精度數(shù)值類型,是最常用的類型;字符型(char):字符數(shù)組,每個(gè)字符占16位;稀疏型(sparse):雙精度稀疏矩陣,只存儲(chǔ)矩陣中的非0元素;細(xì)胞型(cell):細(xì)胞,可以存放任意類型數(shù)據(jù)結(jié)構(gòu)體(struct):不同類型的數(shù)據(jù)集合存儲(chǔ)型(storage):用于圖像處理MATLAB會(huì)根據(jù)表達(dá)式的運(yùn)算結(jié)果,自動(dòng)確定變量的類型和大小。變量的數(shù)據(jù)類型可以用以下函數(shù)來(lái)查看:isa(var,’type’)%變量var的數(shù)據(jù)類型名稱如果是’type’,則返回1,否則返回0class(var) %返回變量a的數(shù)據(jù)類型名稱whosvar %查看變量var的詳細(xì)情況2.1引言在MATLAB的運(yùn)算中,經(jīng)常要使用標(biāo)量、向量、矩陣和數(shù)組,這幾個(gè)名稱的定義如下:標(biāo)量:是指1×1的矩陣,即為只含一個(gè)數(shù)的矩陣。向量:是指1×n或n×1的矩陣,即只有一行或者一列的矩陣。矩陣:是一個(gè)矩形的數(shù)組,即二維數(shù)組,其中向量和標(biāo)量都是矩陣的特例,0×0矩陣為空矩陣([])。數(shù)組:是指n維的數(shù)組,為矩陣的延伸,其中矩陣和向量都是數(shù)組的特例。一、一維數(shù)組的創(chuàng)建
1.逐個(gè)元素輸入法
2.冒號(hào)運(yùn)算符法 冒號(hào)運(yùn)算符的格式是:startv:step:endvstartv是初值,即數(shù)組的第一個(gè)元素值。endv是終值,即數(shù)組的最后一個(gè)元素值。step稱為步長(zhǎng),即數(shù)組元素每次增加的值;步長(zhǎng)setp可以省略不寫,此時(shí)默認(rèn)步長(zhǎng)為1;
setp可以為負(fù)值,此時(shí)要求startv>endv。2.2一維數(shù)組
linspace函數(shù)的調(diào)用格式為:x=linspace(a,b,n)數(shù)組的第一個(gè)元素值為a,最后一個(gè)元素值為b,數(shù)組中共有n個(gè)元素,這n個(gè)元素線性均勻分布于a和b之間,即數(shù)組元素依次為3、線性分隔法4、對(duì)數(shù)分隔法logspace函數(shù)的調(diào)用格式為:x=logspace(a,b,n)數(shù)組的第一個(gè)元素值為,最后一個(gè)元素值為,數(shù)組中共有n個(gè)元素,這n個(gè)元素的以10為底的對(duì)數(shù)值均勻分布與a和b之間,即數(shù)組元素依次為2.2一維數(shù)組例:用不同的步距生成間的向量
>>s=0:0.2:pi>>s1=linspace(0,pi,16)>>s2=0:-0.1:pi>>s3=0:pi>>s4=pi:-1:0二、一維數(shù)組的訪問(wèn)一維數(shù)組的訪問(wèn)遵循以下約定:用下標(biāo)方式訪問(wèn)數(shù)組元素,下標(biāo)要用一對(duì)圓括號(hào)()引起來(lái);下標(biāo)代表的是元素在數(shù)組中的位置序號(hào),從1開(kāi)始,最大值為數(shù)組中元素的個(gè)數(shù);下標(biāo)可以是常量,也可以是變量;可以訪問(wèn)數(shù)組中的單個(gè)元素,也可以訪問(wèn)數(shù)組中的某些元素,即數(shù)組的子數(shù)組。例2.2.12.2一維數(shù)組一、二維數(shù)組的建立1.逐個(gè)輸入數(shù)組元素值如果數(shù)組內(nèi)元素?cái)?shù)量少,可以直接從鍵盤逐個(gè)輸入元素的值,需要遵循的規(guī)則是:整個(gè)數(shù)組必須用中括號(hào)“[]”括起來(lái)數(shù)組的行與行之間用分號(hào)“;”分隔,或者用回車符分隔每行之間的元素必須用逗號(hào)“,”或者空格分隔分隔符必須是英文字符,即在英文狀態(tài)下輸入分號(hào)、括號(hào)、方括號(hào)、逗號(hào)等。例2.3.12.3二維數(shù)組2.利用M文件如果數(shù)組元素很多,或者元素值要經(jīng)常改變,我們可以采用M文件來(lái)輸入和保存數(shù)組。用M文件實(shí)現(xiàn)對(duì)數(shù)組x的輸入和保存,方法如下:(1)在當(dāng)前目錄下,用程序編輯器建立一個(gè)名為MyData01.m的文件;(2)在編輯器中輸入x內(nèi)容;(3)保存MyData01.m文件;(4)在命令窗口鍵入MyData01,就可以在內(nèi)存中建立數(shù)組x并讀入數(shù)組元素的值。例2.3.22.3二維數(shù)組3
用標(biāo)準(zhǔn)數(shù)組的生成數(shù)學(xué)中定義了很多標(biāo)準(zhǔn)數(shù)組或者矩陣,如全1數(shù)組、全零數(shù)組、對(duì)角陣等,在Matlab中有相應(yīng)的函數(shù)用來(lái)生成這些標(biāo)準(zhǔn)數(shù)組。1).ones
功能:生成全1數(shù)組,即數(shù)組中的元素都為1。 格式:Y=ones(n) 生成n×n的全1矩陣
Y=ones(m1,m2,…,mk) 生成m1×m2×…×mk的全1數(shù)組
Y=ones(size(A)) 生成和數(shù)組A同樣尺寸的全1數(shù)組2).zeros
功能:生成全0數(shù)組,即數(shù)組中的元素都為0。 格式:同ones函數(shù)3).rand
功能:生成均勻分布隨機(jī)數(shù)組。 格式:Y=sand(‘state’,v) 設(shè)置隨機(jī)發(fā)生器的初始狀態(tài)為v,其他同ones函數(shù)4).randn
功能:產(chǎn)生正態(tài)分布隨機(jī)數(shù)組。 格式:同rand函數(shù)5).magic
功能:產(chǎn)生魔方矩陣,不適用于高維數(shù)組。 格式:M=magic(n) 產(chǎn)生n×n的魔方矩陣6).eye
功能:產(chǎn)生單位矩陣,即主對(duì)角線元素都為1而其他元素都為0的二維數(shù)組 格式:Y=eye(n) Y=eye(n,m) Y=eys(size(A)) Y=eye(m,n,classname)classname是字符串,表示元素的數(shù)據(jù)類型名稱,可取'double','single','int8','uint8','int16','uint16','int32','uint32','int64','uint64'。7).diag
功能:產(chǎn)生對(duì)角陣,即矩陣的某個(gè)對(duì)角線元素不全為0,其他元素為0。 格式:X=diag(v,k)
生成length(v)+k階方陣,并在第k條對(duì)角線放置元素v X=diag(v)
生成length(v)階方陣,并在主對(duì)角線放置元素v v=diag(X,k)
返回方陣X的第k條對(duì)角線元素構(gòu)成的列向量
v=diag(X)
返回方陣X的主對(duì)角線元素構(gòu)成的列向量
v為行向量,表示對(duì)角線元素;k為對(duì)角線位置,k=0
表示主對(duì)角線,k>0表示在主對(duì)角線上方的第k條對(duì)角線,k<0表示在主對(duì)角線下方的第(-k)條對(duì)角線。例2.5.1二、二維數(shù)組的訪問(wèn)二維數(shù)組的訪問(wèn)遵循以下約定:用下標(biāo)方式訪問(wèn)數(shù)組元素,下標(biāo)要用一對(duì)圓形括號(hào)()引起來(lái);用雙下標(biāo)方式訪問(wèn)數(shù)組元素,格式為(r,c),其中r為二維數(shù)組的行下標(biāo),c為二維數(shù)組的列下標(biāo),下標(biāo)之間用逗號(hào)分隔;用單下標(biāo)方式訪問(wèn)二維數(shù)組,二維數(shù)組的單下標(biāo)是按照列優(yōu)先規(guī)則排序的,即二維數(shù)組被看作是從第一列開(kāi)始從左到右依次將各列首位連接而成的一維數(shù)組,單下標(biāo)表示元素在這個(gè)一維數(shù)組中的位置;單下標(biāo)和雙下標(biāo)具有對(duì)應(yīng)關(guān)系,其值可以通過(guò)
ind2sub和sub2ind函數(shù)進(jìn)行轉(zhuǎn)換;即:元素a(i,j)則對(duì)應(yīng)的“單下標(biāo)”為s=(i-1)×m+j??梢栽L問(wèn)二維數(shù)組的某個(gè)元素及其子數(shù)組,可以對(duì)元素和子數(shù)組賦值。例2.3.32.3二維數(shù)組[說(shuō)明]有關(guān)空數(shù)組(用于矩陣元素的刪除)某一維長(zhǎng)度為0的數(shù)組稱為空數(shù)組;空數(shù)組用[]表示,表示數(shù)組中沒(méi)有元素,但可以表示計(jì)算結(jié)果為“空”;只能用isempty函數(shù)正確判斷數(shù)組是否為空;可以通過(guò)給數(shù)組元素賦值空數(shù)組來(lái)縮小數(shù)組的大小;盡量不要用空數(shù)組參與邏輯運(yùn)算和關(guān)系運(yùn)算;2.3二維數(shù)組例2.3.4a=[120;340;569]a(:,3)=[] %刪除一列元素a(1)=[] %刪除一個(gè)元素,則矩陣變?yōu)樾邢蛄?/p>
a=[] %刪除所有元素為空矩陣注意:如果在提取矩陣元素值時(shí),矩陣元素的下標(biāo)行或列(i,j)大于矩陣的大小(m,n),則MATLAB會(huì)提示出錯(cuò);而在給矩陣元素賦值時(shí),如果行或列(i,j)超出矩陣的大小(m,n),則MATLAB自動(dòng)擴(kuò)充矩陣,擴(kuò)充部分以0填充。a=[12;34;56]a(3,3)a(3,3)=9子矩陣塊的提取子矩陣是從對(duì)應(yīng)矩陣中取出一部分元素構(gòu)成,用全下標(biāo)和單下標(biāo)方式取子矩陣。用全下標(biāo)方式a=[123;345;567]a([13],[23])a(1:3,2:3)a(:,3)(2)用單下標(biāo)方式取單下標(biāo)為1、3、2、3的元素構(gòu)成子矩陣。a=[123;345;567]a([13;23])a([1323])(3)邏輯矩陣子矩陣也可以利用邏輯矩陣來(lái)標(biāo)識(shí);邏輯矩陣是大小和對(duì)應(yīng)矩陣相同,而元素值為0或者1的矩陣??梢杂胊(L1,L2)來(lái)表示子矩陣,其中L1、L2為邏輯向量,當(dāng)L1、L2的元素為0則不取該位置元素,反之則取該位置的元素。a=[123;345;567] l1=logical([101])l2=logical([110])a(l1,l2)a(:,2)=0b=a>1a(b)例矩陣A的不同子矩陣提取>>A=[1,2,3;4,5,6;7,8,0]>>B=A(1:2:end,:)>>C=A([1111],:)>>D=A([3,2,1],[2,3])>>E=A(:,end:-1:1)2.4高維數(shù)組
一、高維數(shù)組的創(chuàng)建 可以采用下列方法創(chuàng)建高維數(shù)組:直接通過(guò)全下標(biāo)方式進(jìn)行元素賦值;用低維數(shù)組合成高維數(shù)組;用數(shù)組生成函數(shù)(ones/zeros/rand等)生成高維數(shù)組;用數(shù)組操作函數(shù)(repmat/reshape等)構(gòu)造高維數(shù)組。例2.4.1二、多維數(shù)組的訪問(wèn)對(duì)于高維數(shù)組的訪問(wèn),有下列約定:可以通過(guò)全下標(biāo)方式訪問(wèn)。對(duì)于三維數(shù)組來(lái)說(shuō),第一維下標(biāo)稱為“行下標(biāo)”,第二維下標(biāo)稱為“列下標(biāo)”,第三維下標(biāo)一般稱為“頁(yè)下標(biāo)?!笨梢酝ㄟ^(guò)單下標(biāo)方式訪問(wèn)。高維數(shù)組的單下標(biāo)是按照后維優(yōu)先的次序排列的,對(duì)于三維數(shù)組來(lái)說(shuō),先排列“頁(yè)”,頁(yè)內(nèi)先排列“列”,列內(nèi)再排列“行”,即第1行第1列第1頁(yè)的元素單下標(biāo)為1,然后先變化行下標(biāo),再變化列下標(biāo),最后變化頁(yè)下標(biāo)。數(shù)組的維數(shù)通過(guò)ndims函數(shù)獲取。數(shù)組的尺寸通過(guò)size函數(shù)獲取數(shù)組的所有維中的最大長(zhǎng)度通過(guò)length函數(shù)獲取。例2.4.22.4高維數(shù)組數(shù)組操作對(duì)數(shù)組的操作包括數(shù)組的擴(kuò)展、收縮、重排、元素交換和子數(shù)組訪問(wèn)等。數(shù)組操作可以通過(guò)兩種方式實(shí)現(xiàn),一種是通過(guò)Matlab提供的運(yùn)算符(逗號(hào),分號(hào),括號(hào)等)來(lái)實(shí)現(xiàn),另外一種是使用Matlab提供的數(shù)組操作函數(shù)。下面介紹常用的數(shù)組操作函數(shù)。1、cat功能:把大小相同的若干數(shù)組,沿著指定維的方向,串接成新數(shù)組。格式: C=cat(dim,A,B) C=cat(dim,A1,A2,A3,A4,...)A,B,A1,A2等為被串接數(shù)組,要求這些數(shù)組同維;dim表示串接方向,1表示行,2表示列,
3表示頁(yè),以此類推。2.5數(shù)組操作2、fliplr
功能:沿著垂直中線,左右(Left-Right)對(duì)稱交換數(shù)組元素(不超過(guò)2維)格式:B=fliplr(A)3、flipud
功能:沿著水平中線,上下(Up-Down)對(duì)稱交換數(shù)組元素(不超過(guò)2維)格式:B=flipud(A)4、rot90
功能:逆時(shí)針旋轉(zhuǎn)二維數(shù)組。格式:B=rot90(A) 逆時(shí)針旋轉(zhuǎn)矩陣90度
B=rot90(A,k) 逆時(shí)針旋轉(zhuǎn)矩陣90*k度2.5數(shù)組操作5、repmat
功能:按指定維上的數(shù)目,分塊鋪放指定數(shù)組。格式:B=repmat(A,m,n) 沿著第1維鋪放m個(gè)A,第2維鋪放n個(gè)A B=repmat(A,[mn]) B=repmat(A,[mnp...])6、reshape
功能:在總元素不變的前提下,重新安排數(shù)組各個(gè)維的長(zhǎng)度,形成新數(shù)組。格式:B=reshape(A,m,n) B=reshape(A,m,n,p,...) B=reshape(A,[mnp...]) B=reshape(A,...,[],...)A是待重新安排的數(shù)組;m,n,p等是新數(shù)組各個(gè)維的長(zhǎng)度;[]表示自動(dòng)計(jì)算某個(gè)維的長(zhǎng)度而無(wú)需用戶指定。2.5數(shù)組操作7、tril
功能:提取矩陣的下三角元素,生成下三角陣。格式:L=tril(X) L=tril(X,k)
說(shuō)明:X為待提取的矩陣;k為三角陣的分界線位置,含義同diag8、triu
功能:提取矩陣的上三角元素,生成上三角陣。格式:L=triu(X) L=triu(X,k)
說(shuō)明:X為待提取的矩陣;k為三角陣的分界線位置,含義同diag函數(shù)。例2.5.2例2.5.32.5數(shù)組操作關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符一、邏輯值 在程序流程的控制和解決問(wèn)題的分析判斷中,需要對(duì)某些命題的真假給出答案,因此Matlab定義了邏輯值,包括“邏輯真”和“邏輯假”。對(duì)于邏輯值,Matlab有如下約定:在關(guān)系表達(dá)式和邏輯表達(dá)式中的輸入中,任何非0數(shù)為“邏輯真”,只有0為“邏輯假”。關(guān)系表達(dá)式和邏輯表達(dá)式的計(jì)算結(jié)果是一個(gè)由0和1構(gòu)成的“邏輯數(shù)組”(LogicalArray’),邏輯數(shù)組中“1”表示真,“0”表示假。邏輯數(shù)組屬于“數(shù)值數(shù)組”的子類,它可以作為數(shù)值數(shù)組參與數(shù)值計(jì)算,也可以用于數(shù)組尋訪等特殊場(chǎng)合。比如:用邏輯矩陣作為數(shù)組下標(biāo),可以提取數(shù)組中邏輯矩陣真值位置處的元素。關(guān)系運(yùn)算符和邏輯運(yùn)算符遵循數(shù)組運(yùn)算規(guī)則。二、關(guān)系運(yùn)算符
Matlab提供的關(guān)系運(yùn)算符如下:
< 小于 <= 小于等于
> 大于 >= 大于等于
== 等于
!= 不等于三、邏輯運(yùn)算符
Matlab提供了3種邏輯操作,分別是數(shù)組邏輯操作、位邏輯操作和先決邏輯操作。關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符數(shù)組邏輯操作
&邏輯與 |邏輯或 ~邏輯非 xor 邏輯異或位邏輯操作函數(shù)(操作數(shù)必須是非負(fù)整形標(biāo)量或者數(shù)組)
bitand位與 bitor位或 bitcmp位非 bitnor位異或先決邏輯運(yùn)算符(要求操作數(shù)為標(biāo)量)
&& 先決與,如果第一個(gè)操作數(shù)為假,則不判斷其他操作數(shù),直接給出結(jié)論“假”
|| 先決或,如果第一個(gè)操作數(shù)為真,則不判斷其他操作數(shù),直接給出結(jié)論“真”例2.8.1關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符四、邏輯函數(shù) 邏輯函數(shù)的運(yùn)行結(jié)果是邏輯矩陣,從函數(shù)名上就可以看出其的功能。any(v);%向量v(對(duì)列向量進(jìn)行判斷)中有非0元素,結(jié)果為1,否則為0;對(duì)矩陣的運(yùn)算結(jié)果是行向量all(v);%向量v(對(duì)列向量進(jìn)行判斷)中都是非0元素,結(jié)果為1。對(duì)矩陣的運(yùn)算結(jié)果是行向量isequal(A,B);%判斷是否相等,數(shù)組運(yùn)算ismember(A,B);%A的元素是B中元素,則A相應(yīng)位置為1,否則為0 判斷特殊數(shù)據(jù)的邏輯函數(shù)
isemptyisfiniteisinfisletterisnanisprimeisrealisspace判斷數(shù)據(jù)類型的邏輯函數(shù)
iscellischariscellstrisfieldisglobalishandle islogicalisnumericisobjectissparseisstruct例2.8.2例2.8.3關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符五、運(yùn)算符及其優(yōu)先級(jí)
MATLAB的運(yùn)算符可分為三類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。除去個(gè)別運(yùn)算符外,一般可認(rèn)為算術(shù)運(yùn)算符的優(yōu)先級(jí)最高,其次是關(guān)系運(yùn)算符,再其次是邏輯運(yùn)算符。下表是Matlab運(yùn)算符優(yōu)先級(jí)的約定。關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符優(yōu)先級(jí)別運(yùn)算符1括號(hào)()成員符.
2轉(zhuǎn)置.'共軛轉(zhuǎn)置'數(shù)組冪.^矩陣冪^
3代數(shù)正+代數(shù)負(fù)-邏輯非
~
4數(shù)組乘.*數(shù)組除.\數(shù)組除./矩陣乘*矩陣左除\矩陣右除/5加+減-
6冒號(hào):
7小于<大于>等于==不小于>=不大于<=不等于~=8邏輯與&
9邏輯非|
10先決與&&
11先決非||
12賦值=
關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符如果書(shū)寫表達(dá)式的時(shí)候,無(wú)法弄清某些運(yùn)算符的優(yōu)先級(jí),直接使用括號(hào)來(lái)規(guī)定運(yùn)算次序。2.6數(shù)組運(yùn)算與矩陣運(yùn)算一、數(shù)組運(yùn)算
Matlab定義了數(shù)組運(yùn)算,數(shù)組運(yùn)算是指對(duì)數(shù)組中的每個(gè)元素進(jìn)行相同的運(yùn)算。數(shù)組運(yùn)算可以通過(guò)Matlab提供的運(yùn)算符和數(shù)組運(yùn)算函數(shù)實(shí)現(xiàn)。
1.用數(shù)組運(yùn)算符進(jìn)行數(shù)組運(yùn)算
A+B 數(shù)組加法運(yùn)算
A-B 數(shù)組減法運(yùn)算
A.*B 數(shù)組相乘,A和B相同位置元素的乘積作為結(jié)果數(shù)組的元素
A./B 數(shù)組相除,A和B相同位置元素相除作為結(jié)果數(shù)組的元素A.\B 一定與A./B相同
A.^p 數(shù)組各元素求p次冪
A#B A、B數(shù)組對(duì)應(yīng)元素間進(jìn)行關(guān)系運(yùn)算,#代表關(guān)系運(yùn)算符
A@B A、B數(shù)組對(duì)應(yīng)元素間進(jìn)行邏輯運(yùn)算,@代表邏輯運(yùn)算符
A.
′
數(shù)組轉(zhuǎn)置,非共軛轉(zhuǎn)置
s◎A 標(biāo)量s與數(shù)組A運(yùn)算,s與A的每個(gè)元素進(jìn)行運(yùn)算,◎代表某個(gè)運(yùn)算符2.6數(shù)組運(yùn)算與矩陣運(yùn)算2.數(shù)組運(yùn)算函數(shù)三角函數(shù):sin,cos,asin,asinh,asec,sect,tan,atan等指數(shù)對(duì)數(shù)函數(shù):
exp 指數(shù)函數(shù)
log 自然對(duì)數(shù)函數(shù)
log10 以10為底的對(duì)數(shù)函數(shù)
log2 以2為底的對(duì)數(shù)函數(shù)
pow2 2的冪函數(shù)
sqrt 平方根函數(shù)2.6數(shù)組運(yùn)算與矩陣運(yùn)算2.6數(shù)組運(yùn)算與矩陣運(yùn)算復(fù)數(shù)函數(shù)
abs 絕對(duì)值,模
angle 相角(弧度為單位)
imag 復(fù)數(shù)的虛部
real 復(fù)數(shù)的實(shí)部
conj 復(fù)數(shù)的共軛取整函數(shù):
ceil 向+∞方向取整
fix 向0方向取整
floor 向-∞方向取整
round 向最近的整數(shù)取整,四舍五入
sign 符號(hào)函數(shù),操作數(shù)為正則返回1, 為負(fù)則返回-1,為零則返回0
二、矩陣運(yùn)算 矩陣和二維數(shù)組在數(shù)據(jù)結(jié)構(gòu)上是完全相同的,但是矩陣是一種數(shù)學(xué)變換或者數(shù)學(xué)算子,矩陣的運(yùn)算在數(shù)學(xué)上有嚴(yán)格的運(yùn)算規(guī)則定義,和數(shù)組運(yùn)算是不同的。矩陣運(yùn)算可以通過(guò)Matlab運(yùn)算符實(shí)現(xiàn),Matlab也提供矩陣函數(shù)來(lái)支持矩陣運(yùn)算。下面列出常用的矩陣運(yùn)算。
A+B 矩陣加法
A-B 矩陣減法
A*B 矩陣乘法,要滿足維數(shù)要求,一般不符合交換律
A/B 矩陣右除,求xB=A的最小二乘解
A\B 矩陣左除,求Bx=A的最小二乘解
A^p 矩陣乘方2.6數(shù)組運(yùn)算與矩陣運(yùn)算s*A 標(biāo)量s與矩陣A相乘,標(biāo)量s分別與A的每個(gè)元素相乘
expm(A) 矩陣的指數(shù)函數(shù)
logm(A) 矩陣的對(duì)數(shù)函數(shù)
sqrtm(A) 矩陣的平方根函數(shù)
inv(A) 矩陣的逆矩陣點(diǎn)運(yùn)算。Matlab運(yùn)算符提供了點(diǎn)運(yùn)算功能。在常用的算數(shù)運(yùn)算符前面加上一個(gè)“.”則代表運(yùn)算是按照數(shù)組運(yùn)算規(guī)則進(jìn)行運(yùn)算,否則是按照矩陣運(yùn)算規(guī)則進(jìn)行運(yùn)算的。Matlab中有些運(yùn)算函數(shù)的名字是某個(gè)函數(shù)名字后加了一個(gè)字母m,通常情況下,這兩個(gè)函數(shù)的運(yùn)算功能是相同的,只是加了m的函數(shù)按照矩陣運(yùn)算規(guī)則運(yùn)算,另外一個(gè)函數(shù)按照數(shù)組運(yùn)算規(guī)則運(yùn)算。2.6數(shù)組運(yùn)算與矩陣運(yùn)算例2.6.1三、特殊的運(yùn)算結(jié)果
1.正無(wú)窮大Inf
有些數(shù)值計(jì)算結(jié)果是趨向于無(wú)窮大(Infinity),Matlab中用Inf表示正無(wú)窮大。
2.非數(shù)NaN
有些計(jì)算結(jié)果會(huì)產(chǎn)生非數(shù)(NotaNumber),Matlab中用NaN來(lái)表示非數(shù)。Matlab給出了Inf和NaN的目的是為了避免因?yàn)檫\(yùn)算結(jié)果出現(xiàn)無(wú)窮大或者不可預(yù)知的非數(shù)情況而造成程序執(zhí)行的中斷。例2.6.22.6數(shù)組運(yùn)算與矩陣運(yùn)算2.7多項(xiàng)式一、多項(xiàng)式的創(chuàng)建直接輸入法poly(A)若A為方陣,則創(chuàng)建方陣A的特征多項(xiàng)式poly(a)如果向量a=[bnbn-1…b1b0],則創(chuàng)建
(x-b0)(x-b1)…(x-bn-1)(x-bn)生成 的多項(xiàng)式的系數(shù)向量,即創(chuàng)建全部根為
bn,bn-1,…,b1,b0對(duì)應(yīng)的多項(xiàng)式。在MATLAB里,多項(xiàng)式用其系數(shù)行向量表示。 多項(xiàng)式:表示為:二、多項(xiàng)式的運(yùn)算數(shù)學(xué)上對(duì)多項(xiàng)式的運(yùn)算有嚴(yán)格的定義,多項(xiàng)式運(yùn)算包括多項(xiàng)式相乘、多項(xiàng)式相除、多項(xiàng)式相加減、多項(xiàng)式求導(dǎo)、多項(xiàng)式求值、多項(xiàng)式的部分分式展開(kāi)和多項(xiàng)式求根等。多項(xiàng)式加減:+-
說(shuō)明:使用Matlab的運(yùn)算符+-實(shí)現(xiàn)多項(xiàng)式的加減法多項(xiàng)式相乘:p=conv(p1,p2)
說(shuō)明:p為多項(xiàng)式p1和多項(xiàng)式p2的乘積多項(xiàng)式相除:[q,r]=deconv(p1,p2)
說(shuō)明:多項(xiàng)式p1除以多項(xiàng)式p2,商多項(xiàng)式為q,余多項(xiàng)式為r2.7多項(xiàng)式多項(xiàng)式求導(dǎo)dp=polyder(p) 為多項(xiàng)式p的導(dǎo)數(shù)多項(xiàng)式為dpdp=polyder(p1,p2) 多項(xiàng)式p1和多項(xiàng)式p2乘積的導(dǎo)數(shù)多項(xiàng)式為dp[num,den]=polyder(p1,p2)有理分式(p1/p2)的求導(dǎo)后的有理分式為(num/den)多項(xiàng)式求值pA=polyval(p,A) 按數(shù)組運(yùn)算規(guī)則求多項(xiàng)式p在自變量為A時(shí)的值MA=ployvalm(p,A) 按矩陣運(yùn)算規(guī)則求多項(xiàng)式p在自變量為A時(shí)的值注意:當(dāng)自變量A為矩陣時(shí),多項(xiàng)式中的常數(shù)項(xiàng)a0被當(dāng)作a0*eye(n)處理。2.7多項(xiàng)式多項(xiàng)式求根:
r=roots(p) r為多項(xiàng)式p的根組成的列向量(p的輸入注意缺項(xiàng)的處理)部分分式分解:
[r,p,k]=residue(num,den) 有理分式(num/den)部分分式分解后,r為留數(shù),p為極點(diǎn),k為直項(xiàng)多項(xiàng)式擬合:
p=polyfit(x,y,n) 由給定數(shù)據(jù)x和y擬合出n階多項(xiàng)式p,用來(lái)逼近y=f(x)曲線矩陣的特征多項(xiàng)式:
p=poly(A) 多項(xiàng)式p為矩陣A的特征多項(xiàng)式2.7多項(xiàng)式例:計(jì)算p(x)=x3+21x2+20x多項(xiàng)式的值。
p1=[121200];polyval(p1,2) %計(jì)算x=2時(shí)多項(xiàng)式的值x=0:0.5:3;polyval(p1,x) %計(jì)算x為向量時(shí)多項(xiàng)式的值例:計(jì)算多項(xiàng)式p1(x)=x3+21x2+20x的根以及由多項(xiàng)式的根得出系數(shù)。p1=[121200];roots(p1) %計(jì)算多項(xiàng)式的根
poly([0;-20;-1]) %計(jì)算多項(xiàng)式的系數(shù)例:根據(jù)矩陣來(lái)計(jì)算的特征多項(xiàng)式系數(shù)。
s=[123;345;567]p2=poly(s) %計(jì)算特征多項(xiàng)式
roots(p2) %計(jì)算特征根eig亦可例:將表達(dá)式進(jìn)行部分分式展開(kāi)。p1=[121200];p3=[100200];[r,p,k]=residue(p3,p1)例:計(jì)算表達(dá)式a1=[10]; %對(duì)應(yīng)多項(xiàng)式sa2=[11]; %對(duì)應(yīng)多項(xiàng)式s+1a3=[120]; %對(duì)應(yīng)多項(xiàng)式s+20p1=conv(a1,a2)p1=conv(p1,a3) %計(jì)算s(s+1)(s+20)[p2,r]=deconv(p1,a3) %計(jì)算多項(xiàng)式除法的商和余子式conv(p2,a3)+r %用商*除式+余子式驗(yàn)算例:計(jì)算p(x)=x3+21x2+20x多項(xiàng)式的微分和積分。微分p1=[121200];p4=polyder(p1)積分s=length(p4):-1:1p1=[p4./s,0]例:有效擬合的區(qū)間性圖示用[0,2.5]區(qū)間數(shù)據(jù)擬合曲線擬合[0,5]區(qū)間數(shù)據(jù)x=0:0.1:5;x1=0:0.1:2.5y=erf(x);y1=erf(x1);p=polyfit(x1,y1,6)f=polyval(p,x);plot(x,y,'bo',x,f,'r-')axis([0,5,0,2])legend('p(x)','erf(x)')字符串?dāng)?shù)組一、字符與字符串
MATLAB有強(qiáng)大的字符處理能力,字符串處理主要用于數(shù)據(jù)的可視化顯示、宏操作、符號(hào)計(jì)算和文件操作等。Matlab中,對(duì)于字符和字符串有如下描述:字符是字符串中的一個(gè)元素,一個(gè)英文字符或者一個(gè)漢字都占用一個(gè)字符位。字符在內(nèi)存中是用其ASCII碼存儲(chǔ)的,通常一個(gè)字符的ASCII碼為2個(gè)Byte。字符或者字符串必須放在“單引號(hào)”對(duì)中。如果字符串中出現(xiàn)“單引號(hào)”字符,則用2個(gè)“單引號(hào)”表示。字符串可以看作是一維字符數(shù)組。一維字符串?dāng)?shù)組可以看作是二維字符數(shù)組。例2.9.1二、字符串?dāng)?shù)組的訪問(wèn)一維字符串?dāng)?shù)組相當(dāng)于二維字符數(shù)組,因此其訪問(wèn)方式和二維數(shù)組的訪問(wèn)方式相同,可以采用單下標(biāo)和雙下標(biāo)方式訪問(wèn)。如無(wú)特別說(shuō)明,這里的“字符串?dāng)?shù)組”就指的是一維字符串?dāng)?shù)組。三、字符串轉(zhuǎn)換函數(shù)Matlab提供了大量的字符串轉(zhuǎn)換函數(shù),實(shí)現(xiàn)各種數(shù)據(jù)類型和字符串之間的相互轉(zhuǎn)換。abs 把字符串轉(zhuǎn)換為ASCII碼fprintfsprintfsscanf 字符串的格式化輸入輸出函數(shù)例2.9.2字符串?dāng)?shù)組base2decbin2decdec2basedec2hexhex2dechex2numint2strmat2strnum2strstr2numstr2matchardouble強(qiáng)制轉(zhuǎn)換函數(shù)dec表示十進(jìn)制整數(shù);num表示浮點(diǎn)數(shù);int表示整數(shù);
mat表示數(shù)值矩陣;base表示任意進(jìn)制串;bin表示2進(jìn)制串;hex表示16進(jìn)制串;
str表示字符串;2表示To(轉(zhuǎn)換到),如bin2dec的意思是“把二進(jìn)制串轉(zhuǎn)換到十進(jìn)制整數(shù)”。字符串?dāng)?shù)組四、字符串操作函數(shù) 用戶可以使用Matlab提供的字符串操作函數(shù)對(duì)字符串進(jìn)行各種操作,這些操作包括:創(chuàng)建
blankscharmat2strdeblank連接
strcatstrvcat搜索與替換
findstrstrmatchstrrepstrtok執(zhí)行宏字符串
evalfeval字符串?dāng)?shù)組邏輯判斷
ischarisletterisspace大小寫轉(zhuǎn)換
lowerupper字符串比較
strcmpstrncmp對(duì)齊方式
strjust字符串?dāng)?shù)組細(xì)胞數(shù)組一、細(xì)胞數(shù)組的數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計(jì)中為了便于處理數(shù)據(jù)和簡(jiǎn)化程序代碼,希望將不同類型的數(shù)據(jù)放置在某種數(shù)據(jù)結(jié)構(gòu)中,并且通過(guò)每個(gè)數(shù)據(jù)在這種數(shù)據(jù)結(jié)構(gòu)中的位置索引來(lái)訪問(wèn)該數(shù)據(jù)。數(shù)值數(shù)組(NumbericArray)中只能放置相同類型的數(shù)據(jù),不能解決這樣的問(wèn)題。Matlab定義了細(xì)胞數(shù)組(CellArray),其與數(shù)值數(shù)組的比較如下:相同點(diǎn) 數(shù)值數(shù)組和細(xì)胞數(shù)組都是數(shù)組,都可以用下標(biāo)(單下標(biāo)、全下標(biāo))方式訪問(wèn)不同點(diǎn) 數(shù)值數(shù)組的元素是相同類型的數(shù)據(jù),細(xì)胞數(shù)組的元素 可以是不同類型的數(shù)據(jù)二、細(xì)胞數(shù)組的訪問(wèn) 細(xì)胞數(shù)組也是數(shù)組,可以用訪問(wèn)數(shù)組的方法來(lái)訪問(wèn)細(xì)胞數(shù)組,即通過(guò)單下標(biāo)或全下標(biāo)的方式訪問(wèn)細(xì)胞數(shù)組中的某個(gè)元素或子數(shù)組。細(xì)胞
是細(xì)胞數(shù)組中的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021高考語(yǔ)文總復(fù)習(xí)專題檢測(cè):15-論述類文章閱讀一
- 【先學(xué)后教新思路】2020高考物理一輪復(fù)習(xí)-教案47-電容器與電容-帶電粒子在電場(chǎng)中的運(yùn)動(dòng)
- 陜西省渭南市尚德中學(xué)2024-2025學(xué)年高一上學(xué)期第一次階段性地理試卷(含答案)
- 吉林省松原市前郭五中2024~2025學(xué)年高一上期末考試 化學(xué)(含答題卡、答案)
- 《病患投訴處理技巧》課件
- 河北省唐山市2025屆高三上學(xué)期1月期末考試數(shù)學(xué)試題(含答案)
- 浙江省杭州臨平2023-2024學(xué)年第二學(xué)期期中檢測(cè)卷 六年級(jí)下冊(cè)科學(xué)
- 【同步備課】2020年高中物理學(xué)案(新人教必修二)7.9《實(shí)驗(yàn):驗(yàn)證機(jī)械能守恒定律》5
- 《傳統(tǒng)批發(fā)業(yè)重組》課件
- 【全程復(fù)習(xí)方略】2020年高考化學(xué)課時(shí)提升作業(yè)(四)-2.2-離子反應(yīng)(人教版-四川專供)
- 事業(yè)單位招聘《綜合基礎(chǔ)知識(shí)》考試試題及答案
- 2024年電工(高級(jí)技師)考前必刷必練題庫(kù)500題(含真題、必會(huì)題)
- 墊江縣中醫(yī)院2018年11月份臨床技能中心教學(xué)設(shè)備招標(biāo)項(xiàng)目招標(biāo)文件
- 2024年《浙江省政治學(xué)考必背內(nèi)容》(修訂版)
- 2024-2025學(xué)年初中數(shù)學(xué)七年級(jí)下冊(cè)滬教版(五四學(xué)制)(2024)教學(xué)設(shè)計(jì)合集
- 反射療法師理論考試復(fù)習(xí)題及答案
- 房地產(chǎn)銷售主管崗位招聘筆試題及解答(某大型國(guó)企)2025年
- 廣東省惠州市(2024年-2025年小學(xué)四年級(jí)語(yǔ)文)統(tǒng)編版綜合練習(xí)(上學(xué)期)試卷及答案
- 廣東省廣州市天河區(qū)2024年六上數(shù)學(xué)期末聯(lián)考試題含解析
- 廣東省珠海市2023-2024學(xué)年高二上學(xué)期語(yǔ)文期中試卷(含答案)
- 山東省淄博市周村區(qū)(五四制)2023-2024學(xué)年七年級(jí)上學(xué)期期末考試英語(yǔ)試題(含答案無(wú)聽(tīng)力原文及音頻)
評(píng)論
0/150
提交評(píng)論