第二章 MATLAB基礎(chǔ)_第1頁
第二章 MATLAB基礎(chǔ)_第2頁
第二章 MATLAB基礎(chǔ)_第3頁
第二章 MATLAB基礎(chǔ)_第4頁
第二章 MATLAB基礎(chǔ)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、12.1 MATLAB數(shù)據(jù)類型數(shù)據(jù)類型第第2章章 MATLAB基礎(chǔ)基礎(chǔ)MATLAB數(shù)值型數(shù)據(jù)劃分成整型和浮點(diǎn)型的用意和C語言有所不同。MATLAB的整型數(shù)據(jù)主要為圖像處理等特殊的應(yīng)用問題提供數(shù)據(jù)類型,以便節(jié)省空間或提高運(yùn)行速度。對一般數(shù)值運(yùn)算,絕大多數(shù)情況是采用雙精度浮點(diǎn)型的數(shù)據(jù)。具體的數(shù)據(jù)類型如下:232.1.1數(shù)值型數(shù)據(jù)數(shù)值型數(shù)據(jù)1)整形不同的整數(shù)類型所占用的位數(shù)不同,因此所能表示的數(shù)值范圍不同,在實(shí)際應(yīng)用中,應(yīng)該根據(jù)需要的數(shù)據(jù)范圍選擇合適的整數(shù)類型。有符號整數(shù)類型使用一位來表示正負(fù),因此表示的數(shù)據(jù)范圍和相應(yīng)的無符號整數(shù)類型不同。由于MATLAB中數(shù)值的默認(rèn)存儲類型是雙精度默認(rèn)存儲類型是雙

2、精度浮點(diǎn)類型浮點(diǎn)類型,因此,必須通過下表中列出的轉(zhuǎn)換函數(shù)將雙精度浮點(diǎn)數(shù)值轉(zhuǎn)換成指定的整數(shù)類型。4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)說明字節(jié)數(shù)取值范圍uint8無符號8位整數(shù)10255uint16無符號16位整數(shù)2065535uint32無符號32位整數(shù)404294967295uint64無符號64位整數(shù)801.8447e+19int8有符號8位整數(shù)1128127int16有符號16位整數(shù)23276832767int32有符號32位整數(shù)4-21474836482147483647int64有符號64位整數(shù)8-9.2234e+189.2234e+185【例2.1】通過轉(zhuǎn)換函數(shù)創(chuàng)建整數(shù)類型x=102;y=102.49

3、;z=102.5;xx=int32(x)xx=102yy=int32(y)yy=102zz=int32(z)zz=1036whosNameSizeBytesClassx1x18doublexx1x14int32y1x18doubleyy1x14int32z1x18doublezz1x14int32【分析】從最后的whos命令結(jié)果中可清晰地看出x、y、z三個(gè)變量的數(shù)據(jù)類型全是系統(tǒng)默認(rèn)的雙精度浮點(diǎn)型(double),而xx、yy、zz的數(shù)據(jù)類型全是有符號的32位整形(int32)7MATLAB中還有多種取整函數(shù),可以用不同的策略把浮點(diǎn)小數(shù)轉(zhuǎn)換成整數(shù),如下表所示函數(shù)說明舉例round(a)向最接近的

4、整數(shù)取整,小數(shù)部分是0.5時(shí)向絕對值大的方向取整round(4.3)結(jié)果為4round(4.5)結(jié)果為5fix(a)向0方向取整fix(4.3)結(jié)果為4fix(4.5)結(jié)果為4floor(a)向不大于a的最接近的整數(shù)取整floor(4.3)結(jié)果為4floor(4.5)結(jié)果為4ceil(a)向不小于a的最接近的整數(shù)取整ceil(4.3)結(jié)果為5ceil(4.5)結(jié)果為58數(shù)據(jù)類型參與的數(shù)學(xué)運(yùn)算與MATLAB中默認(rèn)的雙精度浮點(diǎn)運(yùn)算不同。當(dāng)兩種相同的整數(shù)類型進(jìn)行運(yùn)算時(shí),結(jié)果仍然是這種整數(shù)類型;當(dāng)一個(gè)整型數(shù)值與一個(gè)雙精度浮點(diǎn)類型數(shù)值進(jìn)行數(shù)學(xué)運(yùn)算時(shí),計(jì)算結(jié)果是這種整數(shù)類型,取整采用默認(rèn)的四舍五入方式。【

5、注意】兩種不同的整數(shù)類型之間不能進(jìn)行數(shù)學(xué)運(yùn)算,除非提前進(jìn)行強(qiáng)制轉(zhuǎn)換。【例2.2】整數(shù)類型數(shù)值參與的運(yùn)算。x=uint16(103.45)*uint16(20.7)x=2163x=uint16(103.45)*20.7x=2132x=uint16(103.45)*uint32(20.7)%錯(cuò)誤的運(yùn)算式92)浮點(diǎn)型MATLAB中提供了單精度浮點(diǎn)數(shù)類型和雙精度浮點(diǎn)數(shù)類型。它們在存儲位寬、各數(shù)據(jù)位的用處、表示的數(shù)值范圍、轉(zhuǎn)換函數(shù)等方面都不同,如下表所示。類型所占位寬(字節(jié))各數(shù)據(jù)位用處取值范圍轉(zhuǎn)換函數(shù)雙精度64(8)051位表示小數(shù)部分,5262位表示指數(shù)部分,63位表示符號(0為正,1為負(fù))2.22

6、51e-3081.7977e+308double單精度32(4)022位表示小數(shù)部分,2330位表示指數(shù)部分,31位表示符號(0為正,1為負(fù))1.1755e-383.4028e+38single10【例2.3】浮點(diǎn)數(shù)轉(zhuǎn)換函數(shù)的應(yīng)用。clear%將內(nèi)存中的變量清掉x=uint32(210);y=single(32.356);z=15.254;xy=x*y%錯(cuò)誤的運(yùn)算式錯(cuò)誤使用.*整數(shù)只能與相同類的整數(shù)或標(biāo)量雙精度值組合使用。%系統(tǒng)提示的錯(cuò)誤原因xz=x*zxz=320311whosNameSizeBytesClassAttributesx1x14uint32xz1x14uint32y1x14si

7、nglez1x18double123)復(fù)數(shù)復(fù)數(shù)是對實(shí)數(shù)的擴(kuò)展,每一個(gè)復(fù)數(shù)包括實(shí)部和虛部兩部分。MATLAB中默認(rèn)用字符i或者j表示虛部標(biāo)識。創(chuàng)建復(fù)數(shù)可以直接輸入或者利用complex函數(shù)。MATLAB中還有多種對復(fù)數(shù)操作的函數(shù),如下表所示函數(shù)說明函數(shù)說明real(z)返回復(fù)數(shù)z的實(shí)部imag(z)返回復(fù)數(shù)z的虛部abs(z)返回復(fù)數(shù)z的幅度angle(z)返回復(fù)數(shù)z的幅角conj(z)返回復(fù)數(shù)z的共軛復(fù)數(shù)complex(a,b)以a為實(shí)部,b為虛部創(chuàng)建復(fù)數(shù)13【例2.4】復(fù)數(shù)的創(chuàng)建和運(yùn)算。a=1+2ia=1.0000+2.0000ix=int32(8);y=int32(10);z=comple

8、x(x,y)z=8+10i14whosNameSizeBytesClassAttributesa1x116doublecomplexx1x14int32y1x14int32z1x18int32complex152.2MATLAB的常量及變量的常量及變量2.2.1常量常量常量是程序語句中取不變值的那些量。如表達(dá)式y(tǒng)=0.314*x,其中就包含一個(gè)0.314這樣的數(shù)值常數(shù),它便是一個(gè)數(shù)值常量。而在另一表達(dá)式s=Hello中,單引號內(nèi)的英文字符串“Hello”則是一個(gè)字符串常量。16在Matlab中,字符串常量采用一對半角單引號括起來,字符串常量可包括數(shù)字,字母和其它符號。對于矩陣來說,如12;34

9、,則可認(rèn)為是矩陣常量,當(dāng)然這是個(gè)2x2矩陣,矩陣常用半角中的括號“”和“”括起來。17除此之外在MATLAB中,有一類常量是由系統(tǒng)默認(rèn)給定一個(gè)符號來表示的。如pi,它代表圓周率這個(gè)常數(shù),即3.1415926。類似于C語言中的符號常量,這些常量如下表所示,有時(shí)又稱為系統(tǒng)預(yù)定義的變量。18常量(特殊函數(shù))含義ans用于存儲計(jì)算結(jié)果的默認(rèn)變量名pi圓周率 的雙精度表示i或j用于復(fù)數(shù)單位,即 i2=j2=-1Inf或 inf無窮大,前面可加+或NaN非數(shù)值量,產(chǎn)生于0/0、無窮大 /無窮大eps容錯(cuò)量,非常接近于0,計(jì)算機(jī)上的值為 2-52date當(dāng)前日期Realmin或realminMatlab所能

10、表示實(shí)數(shù)的最小絕對值Realmax或realmaxMatlab所能表示實(shí)數(shù)的最大絕對值versionMatlab版本信息 如8.3.0.532 (R2014a)19【例2.6】顯示符號常量eps,realmin,realmax的值epsans=2.2204e-16realminans=2.2251e-308realmaxans=1.7977e+30820【例2.7】創(chuàng)建無窮量和非數(shù)值量。clearx=1/0%產(chǎn)生正無窮大x=Infy=log(0)%產(chǎn)生負(fù)無窮大y=-Infz=0/0%產(chǎn)生非數(shù)值量z=NaN212.2.2變量變量變量是在程序運(yùn)行中值可以改變的量,變量由變量名來表示。在MATLAB

11、中,變量名的命名有自己的規(guī)則,可以歸納成如下幾條。變量名必須以字母開頭,且只能由字母、數(shù)字或者下劃線3類符號組成,不能含有空格和標(biāo)點(diǎn)符號(如(),。%)等。變量名區(qū)分字母的大小寫。例如,“name”和“Name”是不同的變量。變量名不能超過63個(gè)字符,第63個(gè)字符后的字符被忽略。對于MATLAB6.5以前的版本,變量名不能超過31個(gè)字符。關(guān)鍵字不能作為變量名。22作為一種編程語言,MATLAB中為編程保留了一些關(guān)鍵字:break、case、catch、classdef、continue、else、elseif、end、for、function、global、if、otherwise、parfo

12、r、persistent、return、spmd、switch、try、while,這些關(guān)鍵字在程序編輯窗口中會(huì)以藍(lán)色顯示(可以自己改變),它們是不能作為變量名的,否則會(huì)出現(xiàn)錯(cuò)誤。23【例2.8】變量賦值a=3.14a=3.1400class(a)%函數(shù)class用來是判斷變量數(shù)據(jù)類型的ans=double%變量a是雙精度的浮點(diǎn)型數(shù)據(jù)24a=hello!%變量a重新賦值hello!class(a)ans=char%變量a是字符串型的數(shù)據(jù)pi*2%表達(dá)式的值沒給任何自定義變量時(shí),就送給系統(tǒng)特殊變量ansans=6.2832252.3 標(biāo)量、向量、矩陣與數(shù)組標(biāo)量、向量、矩陣與數(shù)組標(biāo)量、向量、矩陣和

13、數(shù)組是MATLAB運(yùn)算中涉及的一組基本運(yùn)算量。它們各自的特點(diǎn)及相互間的關(guān)系可以描述如下。261)數(shù)組不是一個(gè)數(shù)學(xué)量,而是一個(gè)用于高級語言程序設(shè)計(jì)的概念。如果數(shù)組元素按一維線性方式組織在一起,那么稱其為一維數(shù)組。一維數(shù)組的數(shù)學(xué)原型是向量。如果數(shù)組元素分行、列排成一個(gè)二維平面表格,那么稱其為二維數(shù)組。二維數(shù)組的數(shù)學(xué)原型是矩陣。像A1234就是一個(gè)含有4個(gè)元素一維數(shù)組,而B=12;34一個(gè)二行二列的二維數(shù)組如果元素在排成二維數(shù)組的基礎(chǔ)上,再將多個(gè)行、列數(shù)分別相同的二維數(shù)組疊成一個(gè)立體表格,便形成三維數(shù)組。依此類推,便有了多維數(shù)組的概念。272)矩陣是一個(gè)數(shù)學(xué)概念,一般高級語言并未將其作為基本的運(yùn)算量

14、,但MATLAB是個(gè)例外。一般高級語言是不認(rèn)可將兩個(gè)矩陣視為兩個(gè)簡單變量而直接進(jìn)行加、減、乘、除的,要完成矩陣的四則運(yùn)算必須借助于循環(huán)結(jié)構(gòu)。當(dāng)MATLAB將矩陣引入作為基本運(yùn)算量后,上述局面改變了。MATLAB不僅實(shí)現(xiàn)了矩陣的簡單加、減、乘、除運(yùn)算,而且許多與矩陣相關(guān)的其他運(yùn)算因此大大簡化。如A12;34B56;78這是兩個(gè)同階的22矩陣,因此在MATLAB中,可將它們看成兩個(gè)常量進(jìn)行諸如A+B,AB,A*B,A/B這樣一些算術(shù)運(yùn)算283)向量是一個(gè)數(shù)學(xué)量,一般高級語言中也未引入,它可視為矩陣的特例。從MATLAB的工作區(qū)可以查看到:一個(gè)n維的行向量是一個(gè)1n階的矩陣,而一個(gè)n維的列向量則當(dāng)成

15、n1階的矩陣。如A1234就是一個(gè)4維的行向量。也可看成是一個(gè)一維數(shù)組,還要看成是一個(gè)14階的矩陣。294)標(biāo)量的提法也是一個(gè)數(shù)學(xué)概念,但在MATLAB中,一方面可將其視為一般高級語言的簡單變量來處理,另一方面又可把它當(dāng)成11階的矩陣,這一看法與矩陣作為MATLAB的基本運(yùn)算量是一致的。如A1就是一個(gè)標(biāo)量,也就是一般的簡單變量,同時(shí)也可將它看成一個(gè)11階的矩陣。305)在MATLAB中,二維數(shù)組和矩陣其實(shí)是數(shù)據(jù)結(jié)構(gòu)形式相同的兩種運(yùn)算量。二維數(shù)組和矩陣的表示、建立、存儲根本沒有區(qū)別,區(qū)別只在于它們的運(yùn)算符和運(yùn)算法則不同。例如,向命令窗口中輸入A=12;34這個(gè)量,實(shí)際上它有兩種可能的角色:矩陣A

16、或二維數(shù)組A。這就是說,單從形式上是不能完全區(qū)分矩陣和數(shù)組的,必須再看它使用什么運(yùn)算符與其他量之間進(jìn)行運(yùn)算。316)數(shù)組的維和向量的維是兩個(gè)完全不同的概念。數(shù)組的維是從數(shù)組元素排列后所形成的空間結(jié)構(gòu)定義的:線性結(jié)構(gòu)是一維,平面結(jié)構(gòu)是二維,立體結(jié)構(gòu)是三維,當(dāng)然還有四維以至多維。向量的維相當(dāng)于一維數(shù)組中的元素個(gè)數(shù)。7)字符串字符串是Matlab中另外一種形式的運(yùn)算量。正如前面介紹的那樣,在Matlab中,字符串是用單引號來標(biāo)示的,例如,S=Iamastudent.。賦值號之后在單引號內(nèi)的字符即是一個(gè)字符串,而S是一個(gè)字符串變量,整個(gè)語句完成了將一個(gè)字符串常量賦值給字符串變量的操作。在Matlab中

17、,字符串的存儲是按其中字符逐個(gè)順序單一存放的,且存放的是它們各自的ASCII碼,由此看來字符串實(shí)際可視為一個(gè)字符矩陣,字符串中每個(gè)字符則是這個(gè)矩陣的一個(gè)元素。與數(shù)值型類似,可以定義字符串矩陣。322.4 運(yùn)算符運(yùn)算符在Matlab中運(yùn)算符包括算術(shù)運(yùn)算符,關(guān)系運(yùn)算符和邏輯運(yùn)算符,由這些運(yùn)算符所組成的復(fù)雜表達(dá)式中同樣具有運(yùn)算的優(yōu)先級。332.4.1 算術(shù)運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算符適用于標(biāo)量、向量、矩陣及數(shù)組,由于標(biāo)量、向量及數(shù)組也可看作矩陣進(jìn)行運(yùn)算。以下表就以矩陣為主列出了相應(yīng)的算術(shù)運(yùn)算符34上述表中的運(yùn)算主要是針對類似矩陣的數(shù)組而言的,一般稱之為帶點(diǎn)(.)的算術(shù)運(yùn)算。35【例2.9】設(shè)A12;3

18、4B56;78分別計(jì)算A*B,A.*B的值A(chǔ)=12;34;B=56;78;C=A*B%計(jì)算結(jié)果符合線性代數(shù)中的矩陣相乘的運(yùn)算規(guī)則C=1922435036D=A.*B%計(jì)算結(jié)果是按照數(shù)組定義的乘法運(yùn)算規(guī)則,即對應(yīng)元素的相乘D=5122132372.4.2 關(guān)系運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符可適用于標(biāo)量、向量、矩陣及數(shù)組。規(guī)則如下表38【例2.10】設(shè)A12;34B56;78分別計(jì)算AE=AF=A=BF=0000392.4.3 邏輯運(yùn)算符邏輯運(yùn)算符邏輯運(yùn)算符可適用于標(biāo)量、向量、矩陣。規(guī)則如下表40【例2.11】設(shè)A12;04,B=2分別計(jì)算A&B,A|B的值A(chǔ)=12;04;B=2;%B在這里是個(gè)標(biāo)量G

19、=A&BG=1101H=A|BH=1111【思考】如果A12;34,B123,則A&B,A|B結(jié)果會(huì)怎樣412.4.4 運(yùn)算符的優(yōu)先級運(yùn)算符的優(yōu)先級運(yùn)算符的優(yōu)先級決定了一個(gè)復(fù)雜運(yùn)算式的結(jié)合規(guī)則以及計(jì)算順序,Matlab中各種運(yùn)算符的優(yōu)先級如表422.5 命令、表達(dá)式、函數(shù)和語句命令、表達(dá)式、函數(shù)和語句使用常量、變量、運(yùn)算符以及矩陣等即可組成Matlab中的表達(dá)式和語句,表達(dá)式和語句是編程語言的基本單位,除此之外,還包括命令和函數(shù)。1.命令命令是在命令窗口執(zhí)行的指令,前面介紹命令窗口時(shí)已經(jīng)介紹了一些常用的命令,在Matlab中,命令與函數(shù)都組織在函數(shù)庫里,有一個(gè)專門的函數(shù)庫general就是用來存放通用命令的。一個(gè)命令也是一條語句。432.函數(shù)與C語言類似,Matlab也包含自定義函數(shù)和內(nèi)置函數(shù)。通常對于復(fù)雜的程序,可以將其分解為多個(gè)簡單函數(shù),再按照調(diào)用規(guī)則調(diào)用。函數(shù)最一般調(diào)用格式是:變量=函數(shù)名(參數(shù)1,參數(shù)2,)MATLAB常用數(shù)學(xué)函數(shù)(庫函數(shù))(l)三角函數(shù)和雙曲函數(shù)44名稱含義名稱含義名稱含義sin正弦csc余割atanh反雙曲正切cos

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論