MATLAB的數據類型(一)
來自專欄 MATLAB學習5 人贊了文章
前言
經過前面幾次的「扯皮」,相信大家已經對MATLAB
有有一定的了解了。從本次開始,我們將會進入MATLAB
的基礎篇,可能會有點無聊與枯燥,但沒有這些我們又如何拿MATLAB
去開闢「美麗新世界」。在開始學習MATLAB
之前,請確保你有學過《線性代數》或者與矩陣相關的數學,因為MATLAB
的「靈魂」就是矩陣,只是一個工具而已。首先我們進入的MATLAB
的數據類型,大概會分成三次來介紹,帶各位對MATLAB
的數據類型有一個比較全面的認識。本次主要介紹MATLAB數據類型(一),包括的內容有常量與變數、數值類型、邏輯類型。其實在MATLAB
中最重要的數據對象就是矩陣,MATLAB
的大部分運算或命令都是在矩陣運算的意義下執行的,並且這種運算時定義在複數域上的。
- 常量與變數
- 數值類型
- 邏輯類型
常量與變數
在計算機高級語言中,數據有兩種表現形式:常量與變數。常量是指其值不能被改變的量如2,3.14,-356等;而變數代表的是一個有名字的、具有特定屬性的一個儲存單元。下面主要介紹變數的相關問題。
變數的命名
變數代表一個或者若干個內存單元,為了對變數所對應的存儲單元進行訪問,需要對變數進行命名。這給人取名字的道理是一樣的。在MATLAB
中,變數不需要像C語言
一樣先進行預先聲明才可以使用,直接就可以進行賦值。如:
1a = 3.14
但是在給變數命名的時候需要遵循如下規則,名字是不能亂取的。
- 變數名和函數名對字母的大小寫敏感,故而a與A是兩個不同的變數名。
- 變數名必須以字母開頭,其後可以是任意字母或下劃線,但是不能有空格、中文或標點,例如_xy、a.b均是不合法的變數名,而classNum_x是一個合法的變數名。
- 不能使用
MATLAB
的關鍵字作為變數名。避免使用函數名作為變數名,如果你使用了函數名,則該函數失效。如果你使用sin = 1
,則在未清理緩存的情況下,將會出現sin(1) = 1
,所以不要使用,以免造成不必要的麻煩。 - 變數名最多可包含63個字元,從第64個字元開始之後的字元將會被忽略。
在給變數進行命名的時候盡量做到「見名知意」,推薦使用駝峰式或者帕斯卡式。對變數進行命名是程序員界「第一大難題」,熟悉的英文也就那幾個,有時候命個名還要去翻一翻字典。
在MATLAB
中,可以通過調用isvarname
函數,來驗證變數名是否符合MATLAB
所接受的合法變數名。該函數值返回值為1或0,1代表合法,0代表不合法。
1>> isvarname(_xy)2ans =3 logical4 05>> isvarname(classNum_x)6ans =7 logical8 1
預定義變數
預定義變數就是系統已經定義好了的變數,我們可以把它們當做常量來看待。有如下幾種類型:
預定義變數描述ans系統默認的用作保存運算結果的變數名pi圓周率eps機器零閾值,MATLAB
中的最小數inf表示無窮大NaN或nan表示不定數i或j虛數單位nargin函數的輸入參數個數nargout函數的輸出參數個數realmin可用的最小正實數realmax可用的最大正實數bitmax可用的最大正整數(以雙精度格式存儲)varargin可變的函數輸入參數varargout可變的函數輸出參數beep使計算機發出「嘟嘟」的聲音
舉一個例子
根據S=πr2,計算當r=3時,圓的面積。1 pi*(3^2)
輸出:
1ans =2 28.2743
關鍵字
關鍵字是MATLAB
程序設計中常用到的流程式控制制變數,共有20個,前面提到了不建議使用關鍵字作為變數的名字,因而在此列舉出來,這些我們在後面還會提到。在命令行窗口輸入命令iskeyword
,即可查詢到:
1>> iskeyword 2ans = 3 20×1 cell 數組 4 break 5 case 6 catch 7 classdef 8 continue 9 else10 elseif11 end12 for13 function14 global15 if16 otherwise17 parfor18 persistent19 return20 spmd21 switch22 try23 while
變數的內容還有很多,在此就不再仔細說明了,如果以後用到再說。
數值類型
基本的數值類型主要有整數、單精度浮點數和雙精度浮點數。
整數類型
MATLAB
中提供了8種內置的整數類型,這8種類型的存儲佔位數、能表示的數值範圍和轉換函數均不相同。
整數類型數值範圍轉換函數有符號8位整數?27~27?1int8無符號8位整數0~28?1uint8有符號16位整數?215~215?1int16無符號16位整數0~216?1uint16有符號32位整數?231~231?1int32無符號32位整數0~232?1uint32有符號64位整數?263~263?1int64無符號64位整數0~264?1uint64
不同的整數類型所佔用的位數不同,因而能夠表示的數值範圍也不相同,所以我們在使用的時候要根據實際需要來抉擇。MATLAB
中默認的數值存儲類型是雙精度浮點數類型,我們在進行變數設置為整數類型時就需要使用相應的裝換函數,將雙精度浮點數轉換為指定的整數類型。下面介紹MATLAB
中的取整函數。
函數運演算法則示例floor(x)向下取整floor(1.2) = 1 floor(-2.5) = -3ceil(x)向上取整ceil(1.2) = 2 ceil(-2.5) = -2round(x)取最接近的整數,如果小數部分是0.5,則向絕對值大的方向取整round(1.2) = 1 round(-2.5) = -3fix(x)向0取整fix(1.2) = 1 fix(-2.5) = -2
浮點數類型
MATLAB
中提供了單精度浮點數類型和雙精度浮點數類型,其存儲佔位數、能表示的數值範圍和數值精度均不相同。
浮點類型存儲位寬各位數的意義數值範圍轉換函數單精度320-22位表示小數部分,23-30位表示指數部分,31位表示符號(0正1負)?3.4028238~?1.17549?381.17549?38~3.4028238single雙精度640-51位表示小數部分,52-62位表示指數部分,63位表示符號(0正1負)?1.79769308~?2.22507?3082.22507?308~1.79769308double
單精度浮點數的佔位數比較少,內存小,但能夠表示的數值類型範圍和精度有限。MATLAB
中默認數值類型為雙精度浮點型,我們也可以通過函數來實現雙精度浮點型和單精度浮點型之間轉換。
複數
複數包括實部和虛部兩部分。MATLAB
中默認使用字元i
或j
作為虛部標誌。可以直接輸入或者利用complex
函數。下面列出了關於複數的函數
函數說明函數說明real(z)返回複數z的實部imag(z)返回複數z的虛部abs(z)返回複數z的模angle(z)返回複數z的幅角conj(z)返回複數z的共軛複數complex(a,b)以a為實部、b為虛部創建複數
無窮量(inf)和非數值量(NaN)
前面也提到了,MATLAB
中使用Inf和-Inf分別表示代表正無窮量和負無窮量,NaN表示非數值量。正負無窮量的產生一般是由於運算溢出,產生超出雙精度浮點數數值範圍的結果,非數值量則是由於0/0或Inf/Inf類型的非正常運算而產生,這兩個NaN彼此是不相等的。
邏輯類型
邏輯類型的數據類型是指布爾類型的數據及數據之間的邏輯關係,出現這些運算的目的是為了提供求解真/假命題的答案。作為所有關係和邏輯表達式的輸入,MATLAB
把任何非零數值當作真,把零當作假。所有關係和邏輯表達式的輸出:對於真,輸出為1;對於假,輸出為0。
編輯不易,歡迎推廣
推薦閱讀:
※零基礎學matlab,需要哪些基礎知識?
※MATLAB應用舉例
※炒股只看MACD能賺錢嗎?
※matlab中find函數的思路是怎樣的,為何可以如此高效?