第二章數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算_第1頁
第二章數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算_第2頁
第二章數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算_第3頁
第二章數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算_第4頁
第二章數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算第一頁,共四十九頁,2022年,8月28日主要內(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ù)組第二頁,共四十九頁,2022年,8月28日2.1引言

數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)的重要基礎(chǔ),使用合理的數(shù)據(jù)結(jié)構(gòu)去描述問題,能夠縮短程序代碼、簡化程序結(jié)構(gòu)、便于程序維護(hù)。在MATLAB里共有六種基本數(shù)據(jù)類型,每一種類型可以構(gòu)成一維、二維和多維的數(shù)組。這六種是:雙精度型(double):雙精度數(shù)值類型,是最常用的類型;字符型(char):字符數(shù)組,每個(gè)字符占16位;稀疏型(sparse):雙精度稀疏矩陣,只存儲矩陣中的非0元素;細(xì)胞型(cell):細(xì)胞,可以存放任意類型數(shù)據(jù)結(jié)構(gòu)體(struct):不同類型的數(shù)據(jù)集合存儲型(storage):用于圖像處理第三頁,共四十九頁,2022年,8月28日2.1引言數(shù)組(Array)可以是一維的行(或列),也可以是二維或多維的。用戶可以操作整個(gè)數(shù)組,也可以操作數(shù)組中的某個(gè)或者某些元素。MATLAB會根據(jù)表達(dá)式的運(yùn)算結(jié)果,自動(dòng)確定變量的類型和大小。變量的數(shù)據(jù)類型可以用以下函數(shù)來查看:isa(var,’type’)%變量var的數(shù)據(jù)類型名稱如果是type,則返回1,否則返回0class(var) %返回變量a的數(shù)據(jù)類型名稱whosvar %查看變量var的詳細(xì)情況第四頁,共四十九頁,2022年,8月28日2.2一維數(shù)組一、一維數(shù)組的創(chuàng)建1.逐個(gè)元素輸入法2.冒號運(yùn)算符法

【說明】冒號運(yùn)算符的格式是:startv:step:endvstartv是初值,即數(shù)組的第一個(gè)元素值。endv是終值,即數(shù)組的最后一個(gè)元素值。step稱為步長,即數(shù)組元素每次增加的值;步長setp可以省略不寫,此時(shí)默認(rèn)步長為1;setp可以為負(fù)值,此時(shí)要求startv>endv。第五頁,共四十九頁,2022年,8月28日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、對數(shù)分隔法【說明】logspace函數(shù)的調(diào)用格式為:x=logspace(a,b,n)數(shù)組的第一個(gè)元素值為,最后一個(gè)元素值為,數(shù)組中共有n個(gè)元素,這n個(gè)元素的以10為底的對數(shù)值均勻分布與a和b之間,即數(shù)組元素依次為第六頁,共四十九頁,2022年,8月28日2.2一維數(shù)組二、一維數(shù)組的訪問一維數(shù)組的訪問遵循以下約定:用下標(biāo)方式訪問數(shù)組元素,下標(biāo)要用一對圓括號()引起來;下標(biāo)代表的是元素在數(shù)組中的位置序號,從1開始,最大值為數(shù)組中元素的個(gè)數(shù);下標(biāo)可以是常量,也可以是變量;可以訪問數(shù)組中的單個(gè)元素,也可以訪問數(shù)組中的某些元素,即數(shù)組的子數(shù)組。第七頁,共四十九頁,2022年,8月28日2.3二維數(shù)組一、二維數(shù)組的建立1.逐個(gè)輸入數(shù)組元素值如果數(shù)組內(nèi)元素?cái)?shù)量少,可以直接從鍵盤逐個(gè)輸入元素的值,需要遵循的規(guī)則是:整個(gè)數(shù)組必須用中括號“[]”括起來數(shù)組的行與行之間用分號“;”分隔,或者用回車符分隔每行之間的元素必須用逗號“,”或者空格分隔分隔符必須是英文字符,即在英文狀態(tài)下輸入分號、括號、方括號、逗號等第八頁,共四十九頁,2022年,8月28日2.3二維數(shù)組2.利用M文件如果數(shù)組元素很多,或者元素值要經(jīng)常改變,我們可以采用M文件來輸入和保存數(shù)組。用M文件實(shí)現(xiàn)對數(shù)組x的輸入和保存,方法如下:(1)在當(dāng)前目錄下,用程序編輯器建立一個(gè)名為MyData.m的文件;(2)在編輯器中輸入x內(nèi)容;(3)保存MyData.m文件;(4)在命令窗口鍵入MyData,就可以在內(nèi)存中建立數(shù)組x并讀入數(shù)組元素的值。第九頁,共四十九頁,2022年,8月28日2.3二維數(shù)組二、二維數(shù)組的訪問二維數(shù)組的訪問遵循以下約定:用下標(biāo)方式訪問數(shù)組元素,下標(biāo)要用一對圓形括號()引起來;用雙下標(biāo)方式訪問數(shù)組元素,格式為(r,c),其中r為二維數(shù)組的行下標(biāo),c為二維數(shù)組的列下標(biāo),下標(biāo)之間用逗號分隔;用單下標(biāo)方式訪問二維數(shù)組,二維數(shù)組的單下標(biāo)是按照列優(yōu)先規(guī)則排序的,即二維數(shù)組被看作是從第一列開始從左到右依次將各列首位連接而成的一維數(shù)組,單下標(biāo)表示元素在這個(gè)一維數(shù)組中的位置;單下標(biāo)和雙下標(biāo)具有對應(yīng)關(guān)系,其值可以通過ind2sub和sub2ind函數(shù)進(jìn)行轉(zhuǎn)換;可以訪問二維數(shù)組的某個(gè)元素及其子數(shù)組,可以對元素和子數(shù)組賦值。第十頁,共四十九頁,2022年,8月28日2.3二維數(shù)組【說明】有關(guān)空數(shù)組某一維長度為0的數(shù)組稱為空數(shù)組;空數(shù)組用[]表示,表示數(shù)組中沒有元素,但可以表示計(jì)算結(jié)果為“空”;僅僅能用isempty函數(shù)正確判斷數(shù)組是否為空;可以通過給數(shù)組元素賦值空數(shù)組來縮小數(shù)組的大小;盡量不要用空數(shù)組參與邏輯運(yùn)算和關(guān)系運(yùn)算;第十一頁,共四十九頁,2022年,8月28日2.4高維數(shù)組一、高維數(shù)組的創(chuàng)建 可以采用下列方法創(chuàng)建高維數(shù)組:直接通過全下標(biāo)方式進(jìn)行元素賦值;用低維數(shù)組合成高維數(shù)組;用數(shù)組生成函數(shù)(ones/zeros/rand等)生成高維數(shù)組;用數(shù)組操作函數(shù)(repmat/reshape等)構(gòu)造高維數(shù)組。第十二頁,共四十九頁,2022年,8月28日2.4高維數(shù)組二、多維數(shù)組的訪問對于高維數(shù)組的訪問,有下列約定:可以通過全下標(biāo)方式訪問。對于三維數(shù)組來說,第一維下標(biāo)稱為“行下標(biāo)”,第二維下標(biāo)稱為“列下標(biāo)”,第三維下標(biāo)一般稱為“頁下標(biāo)?!笨梢酝ㄟ^單下標(biāo)方式訪問。高維數(shù)組的單下標(biāo)是按照后維優(yōu)先的次序排列的,對于三維數(shù)組來說,先排列“頁”,頁內(nèi)先排列“列”,列內(nèi)再排列“行”,即第1行第1列第1頁的元素單下標(biāo)為1,然后先變化行下標(biāo),再變化列下標(biāo),最后變化頁下標(biāo)。數(shù)組的維數(shù)通過ndims函數(shù)獲取。數(shù)組的尺寸通過size函數(shù)獲取數(shù)組的所有維中的最大長度通過length函數(shù)獲取。第十三頁,共四十九頁,2022年,8月28日2.5數(shù)組操作一、標(biāo)準(zhǔn)數(shù)組的生成數(shù)學(xué)中定義了很多標(biāo)準(zhǔn)數(shù)組或者矩陣,如全1數(shù)組、全零數(shù)組、對角陣等,在Matlab中有相應(yīng)的函數(shù)用來生成這些標(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ù)第十四頁,共四十九頁,2022年,8月28日2.5數(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的魔方矩陣第十五頁,共四十九頁,2022年,8月28日2.5數(shù)組操作6.eye 功能:產(chǎn)生單位矩陣,即主對角線元素都為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'。第十六頁,共四十九頁,2022年,8月28日2.5數(shù)組操作7.diag 功能:產(chǎn)生對角陣,即矩陣的某個(gè)對角線元素不全為0,其他元素為0。 格式:X=diag(v,k) 生成length(v)+k階方陣,并在第k條對角線放置元素v X=diag(v) 生成length(v)階方陣,并在主對角線放置元素v v=diag(X,k) 返回方陣X的第k條對角線元素構(gòu)成的列向量 v=diag(X) 返回方陣X的主對角線元素構(gòu)成的列向量

說明:v為行向量,表示對角線元素;k為對角線位置,k=0表示主對角線,k>0表示在主對角線上方的第k條對角線,k<0表示在主對角線下方的第(-k)條對角線。第十七頁,共四十九頁,2022年,8月28日2.5數(shù)組操作二、數(shù)組操作對數(shù)組的操作包括數(shù)組的擴(kuò)展、收縮、重排、元素交換和子數(shù)組訪問等。數(shù)組操作可以通過兩種方式實(shí)現(xiàn),一種是通過Matlab提供的運(yùn)算符(逗號,分號,括號等)來實(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表示頁,以此類推。第十八頁,共四十九頁,2022年,8月28日2.5數(shù)組操作2、fliplr功能:沿著垂直中線,左右(Left-Right)對稱交換數(shù)組元素(不超過2維)格式:B=fliplr(A)3、flipud功能:沿著水平中線,上下(Up-Down)對稱交換數(shù)組元素(不超過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度第十九頁,共四十九頁,2022年,8月28日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è)維的長度,形成新數(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è)維的長度;[]表示自動(dòng)計(jì)算某個(gè)維的長度而無需用戶指定。第二十頁,共四十九頁,2022年,8月28日2.5數(shù)組操作7、tril功能:提取矩陣的下三角元素,生成下三角陣。格式:L=tril(X) L=tril(X,k)說明:X為待提取的矩陣;k為三角陣的分界線位置,含義同diag8、triu功能:提取矩陣的上三角元素,生成上三角陣。格式:L=triu(X) L=triu(X,k)

說明:X為待提取的矩陣;k為三角陣的分界線位置,含義同diag函數(shù)。第二十一頁,共四十九頁,2022年,8月28日2.6數(shù)組運(yùn)算與矩陣運(yùn)算一、數(shù)組運(yùn)算 Matlab定義了數(shù)組運(yùn)算,數(shù)組運(yùn)算是指對數(shù)組中的每個(gè)元素進(jìn)行相同的運(yùn)算。數(shù)組運(yùn)算可以通過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ù)組的元素第二十二頁,共四十九頁,2022年,8月28日2.6數(shù)組運(yùn)算與矩陣運(yùn)算A.\B 與A./B相同 A.^p 數(shù)組各元素求p次冪 A#B A、B數(shù)組對應(yīng)元素間進(jìn)行關(guān)系運(yùn)算,#代表關(guān)系運(yùn)算符 A@B A、B數(shù)組對應(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)算符第二十三頁,共四十九頁,2022年,8月28日2.6數(shù)組運(yùn)算與矩陣運(yùn)算2.數(shù)組運(yùn)算函數(shù)三角函數(shù):sin,cos,asin,asinh,asec,sect,tan,atan等指數(shù)對數(shù)函數(shù): exp 指數(shù)函數(shù)log 自然對數(shù)函數(shù)log10 以10為底的對數(shù)函數(shù)log2 以2為底的對數(shù)函數(shù)pow2 2的冪函數(shù)sqrt 平方根函數(shù)第二十四頁,共四十九頁,2022年,8月28日2.6數(shù)組運(yùn)算與矩陣運(yùn)算復(fù)數(shù)函數(shù) abs 絕對值,模 angle 相角(弧度為單位) imag 復(fù)數(shù)的虛部 real 復(fù)數(shù)的實(shí)部 conj 復(fù)數(shù)的共軛取整函數(shù): ceil 向+∞方向取整 fix 向0方向取整 floor 向-∞方向取整 round 向最近的整數(shù)取整 sign 符號函數(shù),操作數(shù)為正則返回1, 為負(fù)則返回-1,為零則返回0第二十五頁,共四十九頁,2022年,8月28日2.6數(shù)組運(yùn)算與矩陣運(yùn)算

二、矩陣運(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)算可以通過Matlab運(yùn)算符實(shí)現(xiàn),Matlab也提供矩陣函數(shù)來支持矩陣運(yùn)算。下面列出常用的矩陣運(yùn)算。 A+B 矩陣加法 A-B 矩陣減法 A*B 矩陣乘法,要滿足維數(shù)要求,一般不符合交換律 A/B 矩陣右除,求xB=A的最小二乘解 A\B 矩陣左除,求Bx=A的最小二乘解 A^p 矩陣乘方第二十六頁,共四十九頁,2022年,8月28日2.6數(shù)組運(yùn)算與矩陣運(yùn)算s*A 標(biāo)量s與矩陣A相乘,標(biāo)量s分別與A的每個(gè)元素相乘 expm(A) 矩陣的指數(shù)函數(shù) logm(A) 矩陣的對數(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)算。第二十七頁,共四十九頁,2022年,8月28日2.6數(shù)組運(yùn)算與矩陣運(yùn)算三、特殊的運(yùn)算結(jié)果 1.正無窮大Inf 有些數(shù)值計(jì)算結(jié)果是趨向于無窮大(Infinity),Matlab中用Inf表示正無窮大。 2.非數(shù)NaN 有些計(jì)算結(jié)果會產(chǎn)生非數(shù)(NotaNumber),Matlab中用NaN來表示非數(shù)。

【說明】Matlab給出了Inf和NaN的目的是為了避免因?yàn)檫\(yùn)算結(jié)果出現(xiàn)無窮大或者不可預(yù)知的非數(shù)情況而造成程序執(zhí)行的中斷。第二十八頁,共四十九頁,2022年,8月28日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對應(yīng)的多項(xiàng)式。在MATLAB里,多項(xiàng)式用其系數(shù)行向量表示。 多項(xiàng)式:表示為:第二十九頁,共四十九頁,2022年,8月28日2.7多項(xiàng)式二、多項(xiàng)式的運(yùn)算數(shù)學(xué)上對多項(xiàng)式的運(yùn)算有嚴(yán)格的定義,多項(xiàng)式運(yùn)算包括多項(xiàng)式相乘、多項(xiàng)式相除、多項(xiàng)式相加減、多項(xiàng)式求導(dǎo)、多項(xiàng)式求值、多項(xiàng)式的部分分式展開和多項(xiàng)式求根等。多項(xiàng)式加減:+- 說明:使用Matlab的運(yùn)算符+-實(shí)現(xiàn)多項(xiàng)式的加減法多項(xiàng)式相乘:p=conv(p1,p2) 說明:p為多項(xiàng)式p1和多項(xiàng)式p2的乘積多項(xiàng)式相除:[q,r]=deconv(p1,p2) 說明:多項(xiàng)式p1除以多項(xiàng)式p2,商多項(xiàng)式為q,余多項(xiàng)式為r第三十頁,共四十九頁,2022年,8月28日2.7多項(xiàng)式多項(xiàng)式求導(dǎo) dp=polyder(p) 為多項(xiàng)式p的導(dǎo)數(shù)多項(xiàng)式為dp dp=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)處理第三十一頁,共四十九頁,2022年,8月28日2.7多項(xiàng)式多項(xiàng)式求根: r=roots(p) r為多項(xiàng)式p的根組成的列向量部分分式分解: [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, 用來逼近y=f(x)曲線矩陣的特征多項(xiàng)式: p=poly(A) 多項(xiàng)式p為矩陣A的特征多項(xiàng)式第三十二頁,共四十九頁,2022年,8月28日2.8關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符

一、邏輯值 在程序流程的控制和解決問題的分析判斷中,需要對某些命題的真假給出答案,因此Matlab定義了邏輯值,包括“邏輯真”和“邏輯假”。對于邏輯值,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ù)組尋訪等特殊場 合。比如:用邏輯矩陣作為數(shù)組下標(biāo),可以提取數(shù) 組中邏輯矩陣真值位置處的元素。關(guān)系運(yùn)算符和邏輯運(yùn)算符遵循數(shù)組運(yùn)算規(guī)則。第三十三頁,共四十九頁,2022年,8月28日2.8關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符二、關(guān)系運(yùn)算符 Matlab提供的關(guān)系運(yùn)算符如下: < 小于 <= 小于等于 > 大于 >= 大于等于 == 等于 != 不等于三、邏輯運(yùn)算符 Matlab提供了3種邏輯操作,他們分別是數(shù)組邏輯操作、位邏輯操作和先決邏輯操作。第三十四頁,共四十九頁,2022年,8月28日2.8關(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é)論“真”第三十五頁,共四十九頁,2022年,8月28日2.8關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符四、邏輯函數(shù) 邏輯函數(shù)的運(yùn)行結(jié)果是邏輯矩陣,從函數(shù)名上就可以看出其的功能。any(v);%向量v中有非0元素,結(jié)果為1,否則為0;對矩陣的運(yùn)算結(jié)果 是行向量all(v);%向量v中都是非0元素,結(jié)果為1。對矩陣的運(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第三十六頁,共四十九頁,2022年,8月28日2.8關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符五、運(yùn)算符及其優(yōu)先級 MATLAB的運(yùn)算符可分為三類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。除去個(gè)別運(yùn)算符外,一般可認(rèn)為算術(shù)運(yùn)算符的優(yōu)先級最高,其次是關(guān)系運(yùn)算符,再其次是邏輯運(yùn)算符。下表是Matlab運(yùn)算符優(yōu)先級的約定。

【說明】如果書寫表達(dá)式的時(shí)候,無法弄清某些運(yùn)算符的優(yōu)先級,建議使用括號來規(guī)定運(yùn)算次序。第三十七頁,共四十九頁,2022年,8月28日2.8關(guān)系運(yùn)算、邏輯運(yùn)算和運(yùn)算符優(yōu)先級別運(yùn)算符1括號()成員符.

2轉(zhuǎn)置.'共軛轉(zhuǎn)置'數(shù)組冪.^矩陣冪^

3代數(shù)正+代數(shù)負(fù)-邏輯非~

4數(shù)組乘.*數(shù)組除.\數(shù)組除./矩陣乘*矩陣左除\矩陣右除/5加+減-

6冒號:

7小于<大于>等于==不小于>=不大于<=不等于~=8邏輯與&

9邏輯非|

10先決與&&

11先決非||

12賦值=

第三十八頁,共四十九頁,2022年,8月28日2.9字符串?dāng)?shù)組一、字符與字符串 MATLAB有強(qiáng)大的字符處理能力,字符串處理主要用于數(shù)據(jù)的可視化顯示、宏操作、符號計(jì)算和文件操作等。Matlab中,對于字符和字符串有如下描述:字符是字符串中的一個(gè)元素,一個(gè)英文字符或者一個(gè)漢字都占用一個(gè)字符位。字符在內(nèi)存中是用其ASCII碼存儲的,通常一個(gè)字符的ASCII碼為2個(gè)Byte。字符或者字符串必須放在“單引號”對中。如果字符串中出現(xiàn)“單引號”字符,則用2個(gè)“單引號”表示。字符串可以看作是一維字符數(shù)組。一維字符串?dāng)?shù)組可以看作是二維字符數(shù)組。第三十九頁,共四十九頁,2022年,8月28日2.9字符串?dāng)?shù)組二、字符串?dāng)?shù)組的訪問一維字符串?dāng)?shù)組相當(dāng)于二維字符數(shù)組,因此其訪問方式和二維數(shù)組的訪問方式相同,可以采用單下標(biāo)和雙下標(biāo)方式訪問。今后如無特別說明,本書中的“字符串?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ù)第四十頁,共四十九頁,2022年,8月28日2.9字符串?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ù)”。第四十一頁,共四十九頁,2022年,8月28日2.9字符串?dāng)?shù)組四、字符串操作函數(shù) 用戶可以使用Matlab提供的字符串操作函數(shù)對字符串進(jìn)行各種操作,這些操作包括:創(chuàng)建 blankscharmat2strdeblank連接 strcatstrvcat搜索與替換 findstrstrmatchstrrepstrtok執(zhí)行宏字符串 evalfeval第四十二頁,共四十九頁,2022年,8月28日2.9字符串?dāng)?shù)組邏輯判斷 ischarisletterisspace大小寫轉(zhuǎn)換 lowerupper字符串比較 strcmpstrncmp對齊方式 strjust第四十三頁,共四十九頁,2022年,8月28日2.10細(xì)胞數(shù)組一、細(xì)胞數(shù)組的數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計(jì)中為了便于處理數(shù)據(jù)和簡化程序代碼,希望將不同類型的數(shù)據(jù)放置在某種數(shù)據(jù)結(jié)構(gòu)中,并且通過每個(gè)數(shù)據(jù)在這種數(shù)據(jù)結(jié)構(gòu)中的位置索引來訪問該數(shù)據(jù)。數(shù)值數(shù)組(NumbericArray)中只能放置相同類型的數(shù)據(jù),不能解決這樣的問題。 Matlab定義了細(xì)胞數(shù)組(CellArray),其與數(shù)值數(shù)組的比較如下:相同點(diǎn) 數(shù)值數(shù)組和細(xì)胞數(shù)組都是數(shù)組,都可以用下標(biāo)(單下標(biāo)、全下標(biāo))方式訪問不同點(diǎn) 數(shù)值數(shù)組的元素是相同類型的數(shù)據(jù),細(xì)胞數(shù)組的元素 可以是不同類型的數(shù)據(jù)第四十四頁,共四十九頁,2022年,8月28日2.10細(xì)胞數(shù)組二、細(xì)胞數(shù)組的訪問 細(xì)胞數(shù)組也是數(shù)組,可以用訪問數(shù)組的方法來訪問細(xì)胞數(shù)組,即通過單下標(biāo)或全下標(biāo)的方式訪問細(xì)胞數(shù)組中的某個(gè)元素或子數(shù)組。細(xì)胞

是細(xì)胞數(shù)組中的元素,可以把細(xì)胞當(dāng)作是一種新的數(shù)據(jù)類型。細(xì)胞的訪問是通過圓括號()和下標(biāo)實(shí)現(xiàn)的,就和訪問數(shù)組元素一樣。細(xì)胞的內(nèi)容

是指細(xì)胞內(nèi)放置的數(shù)據(jù),這些數(shù)據(jù)可以是任何Matlab 數(shù)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論