第2章 MATLAB數(shù)據(jù)及其運(yùn)算_第1頁
第2章 MATLAB數(shù)據(jù)及其運(yùn)算_第2頁
第2章 MATLAB數(shù)據(jù)及其運(yùn)算_第3頁
第2章 MATLAB數(shù)據(jù)及其運(yùn)算_第4頁
第2章 MATLAB數(shù)據(jù)及其運(yùn)算_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章MATLAB數(shù)據(jù)及其運(yùn)算

2.1MATLAB數(shù)值數(shù)據(jù)

2.2MATLAB矩陣的表示

2.3變量及其操作2.4MATLAB常用內(nèi)部函數(shù)

2.5MATLAB運(yùn)算

2.6字符串2.7結(jié)構(gòu)數(shù)據(jù)和單元數(shù)據(jù)2.1MATLAB數(shù)值數(shù)據(jù)2.1.1數(shù)值數(shù)據(jù)類型的分類

1.整型整型數(shù)據(jù)是不帶小數(shù)的數(shù),有帶符號(hào)整數(shù)和無符號(hào)整數(shù)之分。表中列出了各種整型數(shù)據(jù)的取值范圍和對(duì)應(yīng)的轉(zhuǎn)換函數(shù)。類型取值范圍轉(zhuǎn)換函數(shù)類型取值范圍轉(zhuǎn)換函數(shù)無符號(hào)8位整型0到28-1uint8無符號(hào)16位整型0到216-1uint16無符號(hào)32位整型0到232-1uint32無符號(hào)64位整型0到264-1uint64帶符號(hào)8位整型-27到27-1int8帶符號(hào)16位整型-215到215-1int16帶符號(hào)32位整型-231到231-1int32帶符號(hào)64位整型-263到263-1int642.浮點(diǎn)型浮點(diǎn)型數(shù)據(jù)有單精度(single)和雙精度(double)之分,單精度型實(shí)數(shù)在內(nèi)存中占用4個(gè)字節(jié),雙精度型實(shí)數(shù)在內(nèi)存中占用8個(gè)字節(jié),雙精度型的數(shù)據(jù)精度更高。在MATLAB中,數(shù)據(jù)默認(rèn)為雙精度型。single函數(shù)可以將其他類型的數(shù)據(jù)轉(zhuǎn)換為單精度型,double函數(shù)可以將其他類型的數(shù)據(jù)轉(zhuǎn)換為雙精度型。3.復(fù)型復(fù)型數(shù)據(jù)包括實(shí)部和虛部兩個(gè)部分,實(shí)部和虛部默認(rèn)為雙精度型。在MATLAB中,虛數(shù)單位用i或j表示。例如,6+5i與6+5j表示的是同一個(gè)復(fù)數(shù),也可以寫成6+5*i或6+5*j,這里將i或j看作一個(gè)運(yùn)算量參與表達(dá)式的運(yùn)算。2.1.2數(shù)據(jù)的輸出格式

MATLAB用十進(jìn)制數(shù)表示一個(gè)常數(shù),具體可采用日常記數(shù)法和科學(xué)記數(shù)法兩種表示方法。format命令的格式為:format格式符

其中,格式符決定數(shù)據(jù)的輸出格式,各種格式符及其含義如表所示。格式符含義short輸出小數(shù)點(diǎn)后4位,最多不超過7位有效數(shù)字。對(duì)于大于1000的實(shí)數(shù),用5位有效數(shù)字的科學(xué)記數(shù)形式輸出long15位有效數(shù)字形式輸出shorte5位有效數(shù)字的科學(xué)記數(shù)形式輸出longe15位有效數(shù)字的科學(xué)記數(shù)形式輸出shortg從short和shorte中自動(dòng)選擇最佳輸出方式longg從long和longe中自動(dòng)選擇最佳輸出方式rat近似有理數(shù)表示hex十六進(jìn)制表示+正數(shù)、負(fù)數(shù)、零分別用+、-、空格表示bank銀行格式,用元、角、分表示compact輸出變量之間沒有空行l(wèi)oose輸出變量之間有空行注意:format命令只影響數(shù)據(jù)輸出格式,而不影響數(shù)據(jù)的計(jì)算和存儲(chǔ)。2.2MATLAB矩陣的表示2.2.1矩陣的建立

1.直接輸入法

最簡單的建立矩陣的方法是從鍵盤直接輸入矩陣的元素。具體方法如下:將矩陣的元素用方括號(hào)括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號(hào)分隔,不同行的元素之間用分號(hào)分隔。2.利用已建好的矩陣建立更大的矩陣大矩陣可由已建好的小矩陣拼接而成。例如:>>A=[1,2,3;4,5,6;7,8,9];>>B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];>>C=[A,B;B,A]C=123-1-2-3456-4-5-6789-7-8-9-1-2-3123-4-5-6456-7-8-97892.2.2冒號(hào)表達(dá)式冒號(hào)表達(dá)式可以產(chǎn)生一個(gè)行向量,一般格式是:

e1:e2:e3

其中e1為初始值,e2為步長,e3為終止值。

在MATLAB中,還可以用linspace函數(shù)產(chǎn)生行向量。其調(diào)用格式為:

linspace(a,b,n)

其中a和b是生成向量的第一個(gè)和最后一個(gè)元素,n是元素總數(shù)。

顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價(jià)。2.2.3矩陣的引用

1.矩陣元素的引用方式

MATLAB通過下標(biāo)引用矩陣的元素,例如

A(3,2)=200

也可以采用矩陣元素的序號(hào)來引用矩陣元素。矩陣元素的序號(hào)就是相應(yīng)元素在內(nèi)存中的排列順序。在MATLAB中,矩陣元素按列存儲(chǔ),先第一列,再第二列,依次類推。

顯然,序號(hào)(Index)與下標(biāo)(Subscript)是一一對(duì)應(yīng)的,以m×n矩陣A為例,矩陣元素A(i,j)的序號(hào)為(j-1)*m+i。其相互轉(zhuǎn)換關(guān)系也可利用sub2ind和ind2sub函數(shù)求得。

2.利用冒號(hào)表達(dá)式獲得子矩陣

①A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。

②A(i:i+m,:)表示取A矩陣第i~i+m行的全部元素;A(:,k:k+m)表示取A矩陣第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內(nèi),并在第k~k+m列中的所有元素。

③A(:)將矩陣A每一列元素堆疊起來,成為一個(gè)列向量,而這也是MATLAB變量的內(nèi)部儲(chǔ)存方式。還可利用一般向量和end運(yùn)算符來表示矩陣下標(biāo),從而獲得子矩陣。end表示某一維的末尾元素下標(biāo)。3.利用空矩陣刪除矩陣的元素

在MATLAB中,定義[]為空矩陣。給變量X賦空矩陣的語句為X=[]。注意,X=[]與clearX不同,clear是將X從工作空間中刪除,而空矩陣則存在于工作空間中,只是維數(shù)為0。4.改變矩陣的形狀reshape(A,m,n)函數(shù)在矩陣總元素保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。例如:>>x=[23,45,65,34,65,34,98,45,78,65,43,76>>y=reshape(x,3,4y=233498654565454365347876注意:reshape函數(shù)只是改變?cè)仃嚨男袛?shù)和列數(shù),即改變其邏輯結(jié)構(gòu),但并不改變?cè)仃囋貍€(gè)數(shù)及其存儲(chǔ)順序。A(:)將矩陣A的每一列元素堆疊起來,成為一個(gè)列向量,從而改變了矩陣的形狀。2.3變量及其操作2.3.1變量與賦值語句

1.變量命名

在MATLAB7.0中,變量名是以字母開頭,后接字母、數(shù)字或下劃線的字符序列,最多63個(gè)字符。在MATLAB中,變量名區(qū)分字母的大小寫。2.賦值語句

(1)變量=表達(dá)式

(2)表達(dá)式

其中表達(dá)式是用運(yùn)算符將有關(guān)運(yùn)算量連接起來的式子,其結(jié)果是一個(gè)矩陣。例2-1計(jì)算表達(dá)式的值,并顯示計(jì)算結(jié)果。

在MATLAB命令窗口輸入命令:

>>x=sqrt(7)-2i;>>y=exp(pi/2);>>z=(5+cos(47*pi/180))/(1+abs(x-y))z=1.4395

2.3.2預(yù)定義變量

在MATLAB工作空間中,還駐留幾個(gè)由系統(tǒng)本身定義的變量。例如,用pi表示圓周率π的近似值,用i,j表示虛數(shù)單位。

預(yù)定義變量有特定的含義,在使用時(shí),應(yīng)盡量避免對(duì)這些變量重新賦值。2.3.3變量的管理

1.內(nèi)存變量的刪除與修改

MATLAB工作區(qū)窗口專門用于內(nèi)存變量的管理。在工作區(qū)窗口中可以顯示所有內(nèi)存變量的屬性。who和whos這兩個(gè)命令用于顯示在MATLAB工作空間中已經(jīng)駐留的變量名清單。who命令只顯示出駐留變量的名稱,whos在給出變量名的同時(shí),還給出它們的大小、所占字節(jié)數(shù)及數(shù)據(jù)類型等信息。clear命令用于刪除MATLAB工作空間中的變量。2.內(nèi)存變量文件

利用MAT文件可以把當(dāng)前MATLAB工作空間中的一些有用變量長久地保留下來,擴(kuò)展名是.mat。MAT文件的生成和裝入由save和load命令來完成。常用格式為:

save文件名[變量名表][-append][-ascii]

load文件名[變量名表][-ascii]其中,文件名可以帶路徑,但不需帶擴(kuò)展名.mat,命令隱含一定對(duì).mat文件進(jìn)行操作。變量名表中的變量個(gè)數(shù)不限,只要內(nèi)存或文件中存在即可,變量名之間以空格分隔。當(dāng)變量名表省略時(shí),保存或裝入全部變量。-ascii選項(xiàng)使文件以ASCII格式處理,省略該選項(xiàng)時(shí)文件將以二進(jìn)制格式處理。save命令中的-append選項(xiàng)控制將變量追加到MAT文件中。2.4MATLAB常用內(nèi)部函數(shù)2.4.1常用數(shù)學(xué)函數(shù)MATLAB提供了許多數(shù)學(xué)函數(shù),函數(shù)的自變量規(guī)定為矩陣變量,運(yùn)算法則是將函數(shù)逐項(xiàng)作用于矩陣的元素上,因而運(yùn)算的結(jié)果是一個(gè)與自變量同維數(shù)的矩陣。函數(shù)名功能函數(shù)名功能sin/sind正弦函數(shù),輸入值為弧度/角度abs絕對(duì)值函數(shù)cos/cosd余弦函數(shù),輸入值為弧度/角度rem求余tan/tand正切函數(shù),輸入值為弧度/角度mod求模asin/asind反正弦函數(shù),返回值為弧度/角度fix向零方向取整acos/acosd反余弦函數(shù),返回值為弧度/角度floor不大于自變量的最大整數(shù)atan/atand反正切函數(shù),返回值為弧度/角度ceil不小于自變量的最小整數(shù)sinh/asinh雙曲正弦函數(shù)/反雙曲正弦函數(shù)round四舍五入到最鄰近的整數(shù)cosh/acosh雙曲余弦函數(shù)/反雙曲余弦函數(shù)sign符號(hào)函數(shù)tanh/atanh雙曲正切函數(shù)/反雙曲正切函數(shù)gcd最大公約數(shù)sqrt平方根函數(shù)lcm最小公倍數(shù)log自然對(duì)數(shù)函數(shù)factor返回自變量的全部素?cái)?shù)因子log10常用對(duì)數(shù)函數(shù)factorial階乘log2以2為底的對(duì)數(shù)函數(shù)isprime判斷是否為素?cái)?shù)exp自然指數(shù)函數(shù)primes生成素?cái)?shù)列表pow22的冪perms生成所有排列2.4.2矩陣的超越函數(shù)MATLAB還提供了一些直接作用于矩陣的超越函數(shù),這些函數(shù)名都在上述內(nèi)部函數(shù)名之后綴以m,并規(guī)定輸入?yún)?shù)A必須是方陣。1.矩陣平方根sqrtm(A)計(jì)算矩陣A的平方根。例如:>>A=[4,2;3,6];>>B=sqrtm(A)B=1.91710.46520.69782.38232.矩陣對(duì)數(shù)logm(A)計(jì)算矩陣A的自然對(duì)數(shù)。此函數(shù)輸入?yún)?shù)的條件與輸出結(jié)果間的關(guān)系和函數(shù)sqrtm(A)完全一樣。例如:>>A=[4,9;1,5];>>L=logm(A)L=1.06392.43080.27011.33403.矩陣指數(shù)expm(A)的功能都是求矩陣指數(shù)eA。例如,對(duì)上面計(jì)算所得到的A的自然對(duì)數(shù)L,求其矩陣指數(shù)B=eL:>>B=expm(L)B=4.00009.00001.00005.00004.普通矩陣函數(shù)funm(A,@fun)對(duì)方陣A計(jì)算由fun定義的函數(shù)的矩陣函數(shù)值。例如,當(dāng)fun取exp時(shí),funm(A,@exp)可以計(jì)算矩陣A的指數(shù),與expm(A)的計(jì)算結(jié)果一樣。>>A=[2,-1;1,0];>>funm(A,@exp)ans=

5.4366-2.71832.71830.0000>>expm(A)ans=

5.4366-2.71832.71830

2.5MATLAB運(yùn)算

2.5.1算術(shù)運(yùn)算

1.基本算術(shù)運(yùn)算

MATLAB的基本算術(shù)運(yùn)算有:+(加)、-(減)、*(乘)、/(右除)、\(左除)、^(乘方)。

注意,運(yùn)算是在矩陣意義下進(jìn)行的,單個(gè)數(shù)據(jù)的算術(shù)運(yùn)算只是一種特例。

(1)矩陣加減運(yùn)算

假定有兩個(gè)矩陣A和B,則可以由A+B和A-B實(shí)現(xiàn)矩陣的加減運(yùn)算。運(yùn)算規(guī)則是:若A和B矩陣的維數(shù)相同,則可以執(zhí)行矩陣的加減運(yùn)算,A和B矩陣的相應(yīng)元素相加減。如果A與B的維數(shù)不相同,則MATLAB將給出錯(cuò)誤信息,提示用戶兩個(gè)矩陣的維數(shù)不匹配。(2)矩陣乘法

假定有兩個(gè)矩陣A和B,若A為m×n矩陣,B為n×p矩陣,則C=A*B為m×p矩陣。(3)矩陣除法

在MATLAB中,有兩種矩陣除法運(yùn)算:\和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則A\B和B/A運(yùn)算可以實(shí)現(xiàn)。A\B等效于A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效于A矩陣的逆右乘B矩陣,也就是B*inv(A)。對(duì)于含有標(biāo)量的運(yùn)算,兩種除法運(yùn)算的結(jié)果相同,如3/4和4\3有相同的值,都等于0.75。又如,設(shè)a=[10.5,25],則a/5=5\a=[2.10005.0000]。對(duì)于矩陣來說,左除和右除表示兩種不同的除數(shù)矩陣和被除數(shù)矩陣的關(guān)系。對(duì)于矩陣運(yùn)算,一般A\B≠B/A。

(4)矩陣的乘方

一個(gè)矩陣的乘方運(yùn)算可以表示成A^x,要求A為方陣,x為標(biāo)量。

2.點(diǎn)運(yùn)算

在MATLAB中,有一種特殊的運(yùn)算,因?yàn)槠溥\(yùn)算符是在有關(guān)算術(shù)運(yùn)算符前面加點(diǎn),所以叫點(diǎn)運(yùn)算。點(diǎn)運(yùn)算符有.*、./、.\和.^。兩矩陣進(jìn)行點(diǎn)運(yùn)算是指它們的對(duì)應(yīng)元素進(jìn)行相關(guān)運(yùn)算,要求兩矩陣的維參數(shù)相同。2.5.2關(guān)系運(yùn)算

MATLAB提供了6種關(guān)系運(yùn)算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。

它們的含義不難理解,但要注意其書寫方法與數(shù)學(xué)中的不等式符號(hào)不盡相同。

關(guān)系運(yùn)算符的運(yùn)算法則為:

(1)當(dāng)兩個(gè)比較量是標(biāo)量時(shí),直接比較兩數(shù)的大小。若關(guān)系成立,關(guān)系表達(dá)式結(jié)果為1,否則為0。

(2)當(dāng)參與比較的量是兩個(gè)維數(shù)相同的矩陣時(shí),比較是對(duì)兩矩陣相同位置的元素按標(biāo)量關(guān)系運(yùn)算規(guī)則逐個(gè)進(jìn)行,并給出元素比較結(jié)果。最終的關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。

(3)當(dāng)參與比較的一個(gè)是標(biāo)量,而另一個(gè)是矩陣時(shí),則把標(biāo)量與矩陣的每一個(gè)元素按標(biāo)量關(guān)系運(yùn)算規(guī)則逐個(gè)比較,并給出元素比較結(jié)果。最終的關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。

例2-3建立5階方陣A,判斷A的元素是否能被3整除。

A=[24,35,13,22,63;23,39,47,80,80;...90,41,80,29,10;45,57,85,62,21;37,19,31,88,76];

P=rem(A,3)==0P=

10001

01000

10000

11001

00000

其中,rem(A,3)是矩陣A的每個(gè)元素除以3的余數(shù)矩陣。此時(shí),0被擴(kuò)展為與A同維數(shù)的零矩陣,P是進(jìn)行等于(==)比較的結(jié)果矩陣。2.5.3邏輯運(yùn)算

MATLAB提供了3種邏輯運(yùn)算符:&(與)、|(或)和~(非)。

邏輯運(yùn)算的運(yùn)算法則為:

(1)在邏輯運(yùn)算中,確認(rèn)非零元素為真,用1表示,零元素為假,用0表示。

(2)設(shè)參與邏輯運(yùn)算的是兩個(gè)標(biāo)量a和b,那么,

a&ba,b全為非零時(shí),運(yùn)算結(jié)果為1,否則為0。

a|ba,b中只要有一個(gè)非零,運(yùn)算結(jié)果為1。

~a當(dāng)a是零時(shí),運(yùn)算結(jié)果為1;當(dāng)a非零時(shí),運(yùn)算結(jié)果為0。(3)若參與邏輯運(yùn)算的是兩個(gè)同維矩陣,那么運(yùn)算將對(duì)矩陣相同位置上的元素按標(biāo)量規(guī)則逐個(gè)進(jìn)行。最終運(yùn)算結(jié)果是一個(gè)與原矩陣同維的矩陣,其元素由1或0組成。

(4)若參與邏輯運(yùn)算的一個(gè)是標(biāo)量,一個(gè)是矩陣,那么運(yùn)算將在標(biāo)量與矩陣中的每個(gè)元素之間按標(biāo)量規(guī)則逐個(gè)進(jìn)行。最終運(yùn)算結(jié)果是一個(gè)與矩陣同維的矩陣,其元素由1或0組成。(5)邏輯非是單目運(yùn)算符,也服從矩陣運(yùn)算規(guī)則。

(6)在算術(shù)、關(guān)系、邏輯運(yùn)算中,算術(shù)運(yùn)算優(yōu)先級(jí)最高,邏輯運(yùn)算優(yōu)先級(jí)最低。

2.6字符串

在MATLAB中,字符串是用單撇號(hào)括起來的字符序列。

MATLAB將字符串當(dāng)作一個(gè)行向量,每個(gè)元素對(duì)應(yīng)一個(gè)字符,其標(biāo)識(shí)方法和數(shù)值向量相同。也可以建立多行字符串矩陣。2.6.1字符串的表示在MATLAB中,字符串是用單引號(hào)括起來的字符序列。例如:>>xm='CentralSouthUniversity'xm=CentralSouthUniversity例2-5建立一個(gè)字符串向量,然后對(duì)該向量做如下處理:

(1)取第1~5個(gè)字符組成的子字符串。

(2)將字符串倒過來重新排列。

(3)將字符串中的小寫字母變成相應(yīng)的大寫字母,其余字符不變。

(4)統(tǒng)計(jì)字符串中小寫字母的個(gè)數(shù)。命令如下:

ch=‘ABc123d4e56Fg9’;

subch=ch(1:5)%取子字符串

revch=ch(end:-1:1)%將字符串倒排

k=find(ch>=‘a(chǎn)’&ch<=‘z’);%找小寫字母的位置

ch(k)=ch(k)-(‘a(chǎn)’-‘A’);%將小寫字母變成相應(yīng)的大寫字母

char(ch)

length(k)%統(tǒng)計(jì)小寫字母的個(gè)數(shù)2.6.2字符串的操作1.字符串的執(zhí)行與字符串有關(guān)的一個(gè)重要函數(shù)是eval,它的作用是把字符串的內(nèi)容作為對(duì)應(yīng)的MATLAB命令來執(zhí)行,其調(diào)用格式為:eval(s)其中s為字符串。例如:>>t=pi;>>m='[t,sin(t),cos(t)]';>>y=eval(m)y=3.14160.0000-1.00002.字符串與數(shù)值之間的轉(zhuǎn)換字符串是以ASCII碼形式存儲(chǔ)的,abs和double函數(shù)都可以用來獲取字符串矩陣所對(duì)應(yīng)的ASCII碼數(shù)值矩陣。3.字符串的連接在MATLAB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論