第二章MATLAB基礎_第1頁
第二章MATLAB基礎_第2頁
第二章MATLAB基礎_第3頁
第二章MATLAB基礎_第4頁
第二章MATLAB基礎_第5頁
已閱讀5頁,還剩47頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

7、nglez1x18double123)復數復數是對實數的擴展,每一個復數包括實部和虛部兩部分。MATLAB中默認用字符i或者j表示虛部標識。創建復數可以直接輸入或者利用complex函數。MATLAB中還有多種對復數操作的函數,如下表所示函數說明函數說明real(z)返回復數z的實部imag(z)返回復數z的虛部abs(z)返回復數z的幅度angle(z)返回復數z的幅角conj(z)返回復數z的共軛復數complex(a,b)以a為實部,b為虛部創建復數13【例2.4】復數的創建和運算。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常量常量常量是程序語句中取不變值的那些量。如表達式y=0.314*x,其中就包含一個0.314這樣的數值常數,它便是一個數值常量。而在另一表達式s=Hello中,單引號內的英文字符串“Hello”則是一個字符串常量。16在Matlab中,字符串常量采用一對半角單引號括起來,字符串常量可包括數字,字母和其它符號。對于矩陣來說,如12;34

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論