標籤:

MatLab 數據類型速覽

首先祝大家新年快樂啦~ 祝各位程序猿(媛)在新的一年裡不用天天debug呀!

同樣祝我們的CPP雞年大吉~ 愛你們~~

在MATLAB中有15種基本數據類型,分別是8種整型數據、單精度浮點型、雙精度浮點型、邏輯型、字元串型、單元數組、結構體類型和函數句柄。

(這裡呢主要講一下常用的的類型的基礎,然後呢各種類型的數據之間還有轉換函數以及操作函數,例如 num2str(), 這裡不再過多提及,又需要可以自己查資料哈~)

一、數值類型

整型: int8 有符號8位整數 int16 有符號16位整數 int32 有符號32位整數 int64 有符64位整數, uint8 無符號8位整數 uint16 無符號16位整數 uint32 無符號32位整數 uint64 無符號64位整數

浮點型: double 雙精度數據類型 single 單精度數據類型

>> num_double = double(66.66)nnnum_double =nn 66.6600nn>> num_single = single(66.66)nnnum_single =nn 66.6600nn% 以下可以看出每個函數的創建的整數的最大值最小值。n>> i8=[intmin(int8),intmax(int8)]nni8 =nn -128 127nn>> i16 = [intmin(int16), intmax(int16)]nni16 =nn -32768 32767nn>> i32 = [intmin(int32), intmax(int32)]nni32 =nn -2147483648 2147483647nn>> i64 = [intmin(int64), intmax(int64)]nni64 =nn -9223372036854775808 9223372036854775807n

二、字元串(char)

同其他語言一樣MatLab中也有字元串,在字元串一般以行向量形式存在,並且每個佔用兩個位元組的內存。

字元串的創建:

創建字元串在MatLab中只能使用單引號。

如果想在字元串中輸入單引號不能使用反斜杠 進行轉義,可以使用兩個單引號 寫入單引號, 雙引號可以直接寫入。

>> str = "Its great!"nnstr =nn"Its great!"n

字元串的基本操作:

1. 字元串實際上也是一種 MATLAB 的向量或者數組,一般利用 索引操作數組的方法都可以用來字元串。

>> str(end:-1:1)nnans =nn"!taerg stI"n

2. 字元串可以利用 「[]」運算符進行拼接。

若使用 「,」作為不同字元串之間的隔,則相當於擴展成為更長的字元串向量。

若使用 「;」作為不同字元串之間的隔,則相當於擴展成為二維或者多的數組,這時不同行上字元串必須具有樣長度。

>> a = hello; b = there;n>> length(a) == length(b);n>> c = [a,b]nnc =nnhellotherenn>> d = [a;b]nnd =nnhellontheren

3. 使用 char 函數可以將值轉變為字元。

使用 double 函數可以將字元轉變成值。

>> c = double(c)nnc =nn 104 101 108 108 111 116 104 101 114 101nn>> c = char(c)nnc =nnhellotheren

4.字元串的操作函數,字元串的整形輸出。

請參見:

matlab處理字元串的一些函數 - MATLAB中文論壇

三、元胞數組(cell)

元胞數組是MatLab的一種特殊數據類型,可以看作是一種特殊的矩陣,也就是說矩陣的元素不是數字。

創建一個cell可以用以下方法:

1. 使用花括弧將不同的元素合在一起創建一個cell

>> cell1 = {[2,3; 4,5], hello CPP, int8(99); now, 66, 1:20}nncell1 = nn [2x2 double] hello CPP [ 99]n [7.3672e+05] [ 66] [1x20 double]n

2. 將數組的每一個元素都用{}括起來然後再用[]將元素括起來,創建一個cell。

>> cell2 = [{[2,3;4,5]}, { hello CPP}; {int8(99)}, {now}; {66}, {1:20}]nncell2 = nn [2x2 double] hello CPP n [ 99] [ 7.3672e+05]n [ 66] [1x20 double]nnn>> whosn Name Size Bytes Class Attributesnn cell1 2x3 899 cell n cell2 3x2 899 cell n

3. 用{}創建一個cell,MatLab可以自己擴充它的尺寸,沒有定義的元素用空的cell填充。

>> c = {1}nnc = nn [1]nn>> c(3,3) = {3}nnc = nn [1] [] []n [] [] []n [] [] [3]n

4. 使用cell()創建cell,這裡的cell可以是多維的,但創建的所有cell都是空cell。

>> cell_1D = cell(5) %填入一個參數生成一個方陣nncell_1D = nn [] [] [] [] []n [] [] [] [] []n [] [] [] [] []n [] [] [] [] []n [] [] [] [] []nn>> cell_2D = cell(2, 3) %填入兩個參數生成一個二維的cellnncell_2D = nn [] [] []n [] [] []nnn>> cell_4D = cell(3,2,2,2) %填入四個參數生成一個四維cellnncell_4D(:,:,1,1) = nn [] []n [] []n [] []nnncell_4D(:,:,2,1) = nn [] []n [] []n [] []nnncell_4D(:,:,1,2) = nn [] []n [] []n [] []nnncell_4D(:,:,2,2) = nn [] []n [] []n [] []n

元胞數組的基本操作:

訪問並修改cell的元素

a. 使用()訪問,得到的也是一個cell。

>> cell_2D(2,2:3)nnans = nn [] []n

b. 使用{}訪問, 得到的是cell裡面的內容。

>> cell1 = {[2,3;4,5], hello CPP, int8(99); now, 66, 1:20}nncell1 = nn [2x2 double] hello CPP [ 99]n [7.3672e+05] [ 66] [1x20 double]nn>> f = cell1{1,2}nnf =nnhello CPPnn>> class(f)nnans =nncharn

四、結構(struct)

結構是包含一組記錄的數據類型,存儲在相應的欄位中,它可以是多維的;在其他的語言中它的名字可以叫做類(python)、對象(JavaScript)等,但是並不完全相同。

生成一個結構:

使用 "." 運算符直接賦值。

>> iGuo.nationality = China;n>> iGuo.gender = male;n>> iGuo.university = char(XMU);n>> iGuo.all = {iGuo.nationality,iGuo.gender,iGuo.university};n>> iGuonniGuo = nn nationality: Chinan gender: malen university: XMUn all: {China male XMU}nn% MATLAB 會自動擴展結構數 組的尺寸,對於沒有賦值欄位,則直接創建空數組。n>> CPP(7).name = Austin;n>> CPP(7).division = web;n>> CPP(7).skills = [python, {HTML, CSS, JavaScript}]nnCPP = nn1x7 struct array with fields:nn namen divisionn skillsnn>> CPP(1)nnans = nn name: []n division: []n skills: []n

2.利用 struct() 函數創建。

基本語法:

struct_name = struct(field1, value1, field2, value2, ...)

struct_name = struct(field1, {value1-1, value1-2}, field2, {value2-1, value2-2}, ...)

% struct_name = struct(field1, value1, field2, value2, ...)n>> XMU = struct(school, WISE, attraction, sea)nnXMU = nn school: WISEn attraction: seann% struct_name = struct(field1, {value1-1, value1-2}, field2, {value2-1, value2-2}, ...)n>> XMU = struct(schools, {SOE, WISE}, attractions,{lake, sea})nnXMU = nn1x2 struct array with fields:nn schoolsn attractionsnn>> XMU.schoolsnnans =nnSOEnnnans =nnWISEnn>> XMU(1)nnans = nn schools: SOEn attractions: laken

對 struct 的訪問同樣是使用 . 運算符和 () 進行的,請看上文代碼。

非商業轉載註明作者即可,商業轉載請聯繫作者授權並支付稿費。本專欄已授權「維權騎士」網站(rightknights.com)對我在知乎發布文章的版權侵權行為進行追究與維權。

作者:姜昊

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

項目聯繫方式:

  • 項目郵箱(@iGuo 的郵箱):zhangguocpp@163.com
  • 項目網站:http://www.xmucpp.com/(修復中)
  • 項目GitHub:Chinas Prices Project at Xiamen Univerisity (CPP@XMU)
  • 項目專欄:Chinas Prices Project - 知乎專欄
  • 項目知乎賬戶:@CPP
  • 項目公眾號:xmucpp2016(XMUCPP)
  • 參考資料:

    jingyan.baidu.com/artic

    Matlab中有15種基本數據類型_牛子蛋_新浪博客

    matlab程序設計.pdf

推薦閱讀:

MATLAB 高級數據結構連載 3:金融時間序列Financial Time Series (Part C) 跟蹤股票賬戶權益的變動
對函數的輸入進行檢查和解析
【Matlab基礎】04. 自定義函數
matlab畫圖坐標軸標註問題,畫紅圈的地方應該怎麼畫?
如何用Matlab畫一朵花?

TAG:MATLAB |