《的數(shù)據(jù)類型》PPT課件.ppt_第1頁
《的數(shù)據(jù)類型》PPT課件.ppt_第2頁
《的數(shù)據(jù)類型》PPT課件.ppt_第3頁
《的數(shù)據(jù)類型》PPT課件.ppt_第4頁
《的數(shù)據(jù)類型》PPT課件.ppt_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章,MATLAB的數(shù)據(jù)類型,荊華 ,MATLAB使用詳解2012學(xué)年選修課,第4章 MATLAB7.0的數(shù)據(jù)類型,教學(xué)重點(diǎn): MATLAB7.0支持15種基本的數(shù)據(jù)類型,每一種類型的數(shù)據(jù)都是以矩陣或數(shù)組的形式表現(xiàn)出來。本章主要介紹數(shù)值類型、邏輯類型和字符串類型。,4.1 MATLAB中的數(shù)據(jù)類型,MATLAB7.0支持多種數(shù)據(jù)類型,包括: 數(shù)值類型:包含8種整數(shù)類型、單精和雙精浮點(diǎn)類型; 字符和字符串:常以向量數(shù)列的形式表示; 邏輯類型:0和1兩個(gè)數(shù)值,表示邏輯真和假; 元胞、構(gòu)架:可以包含不同類型數(shù)據(jù); 函數(shù)句柄:函數(shù)的指針,可以通過其調(diào)用函數(shù)。 用戶還可以通過MATLAB“類”(class)建立自定義數(shù)據(jù)類型。,所有類型的數(shù)據(jù)都被存儲在矩陣或數(shù)組中進(jìn)行操作,矩陣和數(shù)組可以從最小的空矩陣到任意的n維。,4.2 數(shù)值類型,數(shù)值類型包括有符號整數(shù)類型、無符號整數(shù)類型、單精度浮點(diǎn)類型和雙精度浮點(diǎn)類型,如圖所示。,4.2.1 整數(shù)類型,MATLAB數(shù)值類型中的整數(shù)類型包括有符號、無符號整數(shù)類型各4種,分別是1-、2-、4-和8-字節(jié)(8位、16位、32位和64位)的整數(shù)類型。有符號類型允許表示負(fù)數(shù),但是由于其需要分配1位字節(jié)作為符號位,所以表示的范圍沒有同等字節(jié)的無符號類型大;無符號類型不能表示負(fù)數(shù),只能表示正整數(shù)和0。根據(jù)具體需要,用戶應(yīng)該選擇不同的存儲類型;,例如,對于數(shù)值不大的整數(shù)“22”,就沒有必要使用8-字節(jié)的類型來存儲,因?yàn)?-字節(jié)整型所分配的內(nèi)存空間已經(jīng)足以滿足此數(shù)的存儲了,應(yīng)使用字節(jié)數(shù)少的類型來存儲數(shù)據(jù),這樣可以節(jié)省內(nèi)存空間,提高效率。,4.2.1 整數(shù)類型,表列出了8種整數(shù)類型的名稱、數(shù)值范圍和轉(zhuǎn)換函數(shù)。表中數(shù)據(jù)類型的表示范圍都可以調(diào)用intmax和intmin函數(shù)查詢各自的表示范圍。,應(yīng)用舉例:,例:生成有符號整數(shù)x值為129. x=int8(129) x = 127 intmax(int8) ans = 127 intmin(int8) ans = -128,應(yīng)用舉例:, x=int16(129) x = 129 查看整數(shù)類型:1)whos;2)使用class函數(shù)查看所生成整數(shù)所屬的類型。 whos Name Size Bytes Class x 1x1 2 int16 array Grand total is 1 element using 2 bytes class(x) ans = int16,4.2.2 單精度浮點(diǎn)型,MATLAB中,浮點(diǎn)數(shù)據(jù)類型有單精度和雙精度兩種,其構(gòu)造規(guī)則都是依據(jù)IEEE754標(biāo)準(zhǔn)(關(guān)于此標(biāo)準(zhǔn)的具體描述,可以查詢相關(guān)網(wǎng)站)制定。單精度數(shù)據(jù)需要32位的存儲空間,其空間分配如表所示。,單精度數(shù)據(jù)的字節(jié)位功能,4.2.3 雙精度浮點(diǎn)類型,雙精度浮點(diǎn)類型是MATLAB中的默認(rèn)數(shù)值類型,其構(gòu)造規(guī)則與單精度一樣,依照IEEE754標(biāo)準(zhǔn)。雙精度數(shù)據(jù)需要64位的存儲空間,下表為雙精度空間分配表。,雙精度數(shù)據(jù)的字節(jié)位功能,應(yīng)用舉例:,例:生成整數(shù)x,值為2,并分別轉(zhuǎn)化為單精度浮點(diǎn)數(shù)y和雙精度浮點(diǎn)數(shù)z。 x=2 x = 2 Matlab默認(rèn)生成的數(shù)據(jù)類型為雙精度浮點(diǎn)型 whos Name Size Bytes Class x 1x1 8 double array x=int8(2) x = 2 whos Name Size Bytes Class x 1x1 1 int8 array,應(yīng)用舉例:, y=single(x) y = 2 z=double(x) z = 2 whos Name Size Bytes Class x 1x1 1 int8 array y 1x1 4 single array z 1x1 8 double array Grand total is 3 elements using 13 bytes,4.2.4 復(fù)數(shù),下面將介紹幾種特殊的數(shù)據(jù)類型,即復(fù)數(shù)、“無窮”和“非數(shù)”等概念。MATLAB7.0中,復(fù)數(shù)屬于雙精度浮點(diǎn)數(shù)的一種特殊類型,用戶可以無須任何特殊操作,把復(fù)數(shù)作為一個(gè)整體進(jìn)行處理。,應(yīng)用舉例:, x=3+4i x = 3.0000 + 4.0000i y=3+4j y = 3.0000 + 4.0000i x=y ans = 1,說明:1)”比較結(jié)果返回值1,說明i和j在表示虛數(shù)單位時(shí)意義和用法相同。 2)4i(4j)是一個(gè)完整的虛部,不可以在中間加空格符號。 3)只有數(shù)字才可以和i或者j相連,表達(dá)式不可以。 Xcos(pi/3)i是錯(cuò)誤的。,4.2.4 復(fù)數(shù),Matlab7.0中提供了求一個(gè)復(fù)數(shù)的實(shí)部、虛部、模和相角的函數(shù)分別是: real(z)、 imag(z)、 abs(z) angle(z),x =3.0000 + 4.0000i real(x) ans = 3 imag(x) ans = 4 abs(x) ans = 5 angle(x) ans = 0.9273,4.2.5 無窮,在Matlab中有正無窮和負(fù)無窮。即“Inf”和“Inf”。常出現(xiàn)在: 1)在經(jīng)典的初等數(shù)學(xué)中,1/0是錯(cuò)誤的表達(dá)式(0不能做除數(shù)),是沒有結(jié)果的。但是在MATLAB中,1/0是有意義的,結(jié)果為Inf(Infinity)。 2)例如,浮點(diǎn)數(shù)是有范圍的,一旦MATLAB的運(yùn)算結(jié)果超出浮點(diǎn)數(shù)的表示范圍,系統(tǒng)也會用“-Inf”或“Inf”來表示計(jì)算結(jié)果。例如,10(308+1)的值超出了MATLAB允許的數(shù)值范圍,系統(tǒng)用Inf表示。 10e(308+1) ans = Inf,4.2.6 非數(shù),非數(shù)(NaN),是“Not a Number”的縮寫,是一個(gè)既不是實(shí)數(shù)也不是復(fù)數(shù)的數(shù)值,MATLAB提供這樣一個(gè)特殊類型的目的是擴(kuò)大運(yùn)算范圍,有了這樣一個(gè)數(shù)值,系統(tǒng)對于0/0、Inf/Inf的運(yùn)算結(jié)果,也可以有合理的解釋。 0/0 Warning: Divide by zero. %系統(tǒng)警告:0作為除數(shù)ans = NaN,4.3 邏輯類型,MATLAB用“0”和“1”分別代表邏輯“假”和邏輯“真”,邏輯類型數(shù)據(jù)常以標(biāo)量形式出現(xiàn),但有時(shí)也可以是邏輯數(shù)組(Logical Array)。MATLAB不但提供給用戶比較齊全的算數(shù)運(yùn)算符號,作為一種高級語言,同樣也支持關(guān)系運(yùn)算和邏輯運(yùn)算,并且經(jīng)常在程序中涉及這兩種運(yùn)算,關(guān)系和邏輯運(yùn)算主要是為用戶解決程序設(shè)計(jì)中的“真”、“假”問題。在程序設(shè)計(jì)中編寫代碼,特別是在使用各種控制語句的時(shí)候,用戶常常需要使用這兩種運(yùn)算的結(jié)果(“真”或者“假”)作為控制語句的判斷條件。,在MATLAB中的關(guān)系和邏輯運(yùn)算式中,所有輸入非0的數(shù)都為“邏輯真”,只有0才為“邏輯假”;而計(jì)算結(jié)果,即輸出為一個(gè)邏輯數(shù)組,其中的元素,如果值為1,則表示“真”;如果值為0,則表示假。,4.3 邏輯類型,應(yīng)用舉例:,例如,比較10與100這兩個(gè)數(shù)的大小。代碼如下所示 “10等于100(=表示相等)”這個(gè)表達(dá)式返回值為0,表示表達(dá)式不成立;而“10小于100( 10=100 10100 ans = ans 0 1,4.3.2 關(guān)系運(yùn)算符,關(guān)系運(yùn)算式的一般格式為:x RO y,“RO”代表關(guān)系運(yùn)算符(Relation Operator),在關(guān)系運(yùn)算符兩邊進(jìn)行比較的x和y可以是變量、字符串或者表達(dá)式等不同類型的數(shù)據(jù),如果表達(dá)式正確(True),即x和y之間的關(guān)系為RO所描述的關(guān)系,則輸出結(jié)果為“真”,表達(dá)式返回?cái)?shù)值1;如果表達(dá)式不正確(False),即x和y之間的關(guān)系不是RO所描述的關(guān)系,則輸出結(jié)果為“假”,表達(dá)式返回?cái)?shù)值0。,Matlab7.0 關(guān)系運(yùn)算符,應(yīng)用舉例:,例1:比較矩陣 a1,2,3;4,5,6;7,8,9和其共軛矩陣之間的關(guān)系。 說明:行、列數(shù)相同的數(shù)組可以進(jìn)行關(guān)系運(yùn)算,運(yùn)算的原則是把對應(yīng)的元素逐個(gè)運(yùn)算,并使返回的元素組成一個(gè)與原數(shù)組同維的邏輯數(shù)組,即所有元素非“0”即“1”的數(shù)組。非同維的數(shù)組之間不能進(jìn)行關(guān)系運(yùn)算。, a=1,2,3;4,5,6;7,8,9 a = 1 2 3 4 5 6 7 8 9 a ans = 1 4 7 2 5 8 3 6 9 a=a ans = 1 0 0 0 1 0 0 0 1,應(yīng)用舉例:,例2:m為從1到10的一數(shù)列,即m=1:10,n=2+(m5),求標(biāo)量n的值。 m=1:10 m = 1 2 3 4 5 6 7 8 9 10 n=2+(m5) n = 2 2 2 2 2 3 3 3 3 3 說明:在上述代碼中首先進(jìn)行(m5)的關(guān)系運(yùn)算,然后把返回的邏輯數(shù)組進(jìn)行“加2”的算數(shù)運(yùn)算,得到標(biāo)量n的值。 關(guān)系運(yùn)算可以與算數(shù)運(yùn)算混合使用。注意:關(guān)系運(yùn)算符的優(yōu)先級低于算數(shù)運(yùn)算符,所以(m5)必須加括號。,4.3.3 邏輯運(yùn)算符,MATLAB中的邏輯運(yùn)算,包括我們常見的“與、或、非、異或”運(yùn)算。邏輯運(yùn)算的表現(xiàn)方式有3種,分別是元素方式(Element-wise)、比特方式(Bit-wise)以及短路方式(Short-Circuit)。將分別介紹3種方式的邏輯運(yùn)算符。 元素式邏輯運(yùn)算符,只接受邏輯類型的變量輸入,一般是對于標(biāo)量進(jìn)行操作,具體功能如表所示。,MATLAB元素式邏輯運(yùn)算符,應(yīng)用舉例:, x=1,2,3;4,5,6; y=1,0,0;0,1,1; x&y ans = 1 0 0 0 1 1 x|y ans = 1 1 1 1 1 1 xor(x,y) ans = 0 1 1 1 0 0,例:矩陣x=1,2,3;4,5,6和 矩陣y=1,0,0;0,1,1進(jìn)行邏輯與、邏輯或和邏輯異或運(yùn)算。,說明:進(jìn)行運(yùn)算的元素只要有1個(gè)不為0,則返回1,說明:進(jìn)行運(yùn)算的元素都不為0時(shí)返回1,說明:比較兩元素如果相同返回0,若不同返回1,比特式邏輯運(yùn)算符,比特式邏輯運(yùn)算是對運(yùn)算數(shù)的每一個(gè)比特位進(jìn)行邏輯運(yùn)算,先按照元素式邏輯運(yùn)算規(guī)則把十進(jìn)制的數(shù)值轉(zhuǎn)換為二進(jìn)制的數(shù)進(jìn)行操作,再把得到的二進(jìn)制邏輯數(shù)值轉(zhuǎn)換為十進(jìn)制數(shù)值。,Matlab 比特式邏輯運(yùn)算符,應(yīng)用舉例*:,例如:十進(jìn)制數(shù)分別為21,29進(jìn)行比特位與、比特位或運(yùn)算。 x=21; y=28; bitor(x,y) ans = 29 bitand(x,y) ans = 20,Matlab 短路式邏輯運(yùn)算符,說明:元素式&與短路式&都是邏輯與,執(zhí)行相同的運(yùn)算,其結(jié)果相同,但是兩者的運(yùn)算方式不同。例如:矩陣A&B首先分別計(jì)算出A,B,然后進(jìn)行邏輯與;而A&B首先計(jì)算A,如A的某一元素為0,則結(jié)果的對應(yīng)元素為0,而不用計(jì)算B的對應(yīng)元素。當(dāng)A計(jì)算比較簡單,B很復(fù)雜時(shí),采用&會提高運(yùn)算效率。同樣的“|”與“|”也有相同的區(qū)別,應(yīng)用舉例* :,例:已知X=0,求X=0&1/X和X=0&1/X 。 在Matlab中執(zhí)行結(jié)果顯然均為0,即邏輯假。但元素式邏輯與運(yùn)算和短路式邏輯與運(yùn)算的計(jì)算過程是不同的,前者先分別計(jì)算X=0和1/X的結(jié)果,再進(jìn)行邏輯與(&),而后者系統(tǒng)在判斷符號左邊表達(dá)式X=0的時(shí)候就已經(jīng)得到了結(jié)果為“假”,數(shù)值為“0”;對于邏輯與運(yùn)算只要運(yùn)算數(shù)值為0,則結(jié)果為0,即不需要考慮右邊的1/X的結(jié)果。,4.3.4 運(yùn)算符的優(yōu)先級,對于MATLAB7.0中不同的運(yùn)算,優(yōu)先級是個(gè)很重要的問題。搞清不同種類運(yùn)算符的優(yōu)先級順序,可以更好地理解MATLAB的操作規(guī)則。 MATLAB在執(zhí)行包含算數(shù)、關(guān)系及邏輯運(yùn)算符號的運(yùn)算時(shí),遵循的原則是:按照優(yōu)先級從高到低,同級的從左到右順序執(zhí)行,這與一般的運(yùn)算法則是類似的。常用的MATLAB運(yùn)算符的優(yōu)先級順序,如下表所示,從上到下優(yōu)先級依次是從高到低。,Matlab中常用運(yùn)算符號的優(yōu)先級,算數(shù)運(yùn)算符高于關(guān)系運(yùn)算符高于邏輯運(yùn)算符,應(yīng)用舉例:,已知矩陣z1,0,0;2,0,2;3,3,3計(jì)算z./3和(z./3) z./3 %先取反再點(diǎn)除 ans = 0 0.3333 0.3333 0 0.3333 0 0 0 0 (z./3) %先點(diǎn)除再取反 ans = 0 1 1 0 1 0 0 0 0,4.4 字符與字符串,使用MATLAB進(jìn)行工作和學(xué)習(xí)時(shí),不可避免地會遇到諸如文本處理、坐標(biāo)標(biāo)注等問題,這也就會用到MATLAB提供的另一種數(shù)據(jù)類型字符類型。本節(jié)后續(xù)主要講解的內(nèi)容包括:字符和字符串的概念和用法、字符串的比較與替換及字符串與數(shù)值的互相轉(zhuǎn)化。,在MATLAB中,字符和字符串分別用char和string表示,MATLAB7.0中的char類型都是以2個(gè)字節(jié)編碼來存儲的,一般用單引號括注一個(gè)字符變量,如下代碼所示,a是一個(gè)字符變量。 a=w a = w,4.4 字符與字符串,4.4.1 字符數(shù)組的建立,可以運(yùn)用兩種不同的方式表示字符串,即字符數(shù)組和字符串元胞,有關(guān)字符串元胞的概念將在后續(xù)章節(jié)中介紹,首先介紹使用字符數(shù)組的方式來創(chuàng)建字符串的方法。 例如,以字符數(shù)組的形式生成一個(gè)字符串。 a=the fourth chapter. a = the fourth chapter.,說明:1)字符串可以包含標(biāo)點(diǎn)符號。 2)建立二維字符數(shù)組時(shí),字符數(shù)組要求每行字符含有相同的列。當(dāng)多個(gè)字符串具有不同長度時(shí),為了避免出現(xiàn)錯(cuò)誤,需要在短字符串的尾部添加空格來強(qiáng)制保證字符串等長。 例:把三個(gè)字符串a(chǎn)bc、abcd和abcde合并成一個(gè)行數(shù)為3的字符數(shù)組。 a=abc ;abcd ;abcde a = abc abcd abcde,應(yīng)用舉例,如果不補(bǔ)空格,直接合并不同長度的字符串,系統(tǒng)報(bào)錯(cuò)。 如果字符數(shù)組之間用“,”分隔,形成一行向量,不需補(bǔ)空格 可以直接調(diào)用函數(shù)char創(chuàng)建字符數(shù)組,函數(shù)char可以按照最長字符串的長度,自動把長度不夠的字符串末尾補(bǔ)空格,使所有的字符串的長度都相同。char(x1,x2,) 例如:char(abc,ab) char(abc,ab) ans = abc ab,應(yīng)用舉例:,4.4.2 字符串的比較,MATLAB中,如需要進(jìn)行字符串或字符子串的比較,可以有以下幾種方法: 1) 直接比較兩字符串的全部或者部分是否相等; 2) 比較字符串中的單個(gè)字符是否相等; 3) 對字符串中的每個(gè)元素進(jìn)行識別,判斷其是字符或者空白符號。 說明:可以使用關(guān)系運(yùn)算符“=”進(jìn)行字符數(shù)組的比較,但是要求比較的數(shù)組具有相同的維數(shù),或者其中一個(gè)數(shù)組為標(biāo)量。,常用字符數(shù)組比較函數(shù),應(yīng)用舉例:,例:比較兩個(gè)字符串love和like。 strcmp(love,like) ans = 0 strncmp(love,like,1) ans = 1,4.4.3 字符串的查找與替換,MATLAB中提供了若干字

溫馨提示

  • 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

提交評論