Matlab常用資料型別(一)

2021-08-10 12:19:27 字數 4818 閱讀 9829

總結一下matlab的常用資料型別,消除對matlab的陌生感,方便以後查詢。

matlab中,向量可以視為一維陣列,矩陣可以視為二維陣列,維數≷2的都稱為多維陣列。

第三維稱為」頁」,第四維稱為「箱」。

a =

1234>> z = cat(1,a,a)#行並

z = 123

4123

4>> z = cat(2,a,a)#列並

z = 121

2343

4

可以將元胞陣列看做一種無所不包的廣義矩陣,其元素可以儲存不同資料型別的資料。

區別於一般矩陣,元胞陣列使用花括號」{}」建立。

元胞和元胞裡的內容是兩個不同範疇的東西,我理解為cell是乙個指標陣列,其元素乙個指標,要想得到對應元素所指向的元素需要一層解引用。matlab中設計兩種不同的操作:元胞外標識元胞內編址

a(2,4)指的是第2行第4列的元胞元素。

a指的是元胞陣列中第2行第4列的元胞內容。

>> cell_one = 

cell_one =

[1] '3'

'3'>> cell_one=23

#改變元胞內容

cell_one =

[1] '3'

'3'

[23]

>> cell_two = cell(2,2)

cell_two =

>> cell_two(1,2)=#改變元胞內容

cell_two =

[1]>> cell_two=3

cell_two =

[1][3]

類似於c++的結構體,結構是matlab提供的一種將選擇的資料儲存到乙個實體的資料型別。使用者可通過儲存資料時指定的網域名稱來對域中的資料進行訪問。

>> strct.name = 'one'

strct =

name: 'one'

>> strct.*** = 'f'

strct =

name: 'one'

***: 'f'

>> strct(2).name = 'two'

strct =

1x2 struct

array

with fields:

name

***

>> struc = struct('name','one','***','f','moneys',[1,2,3])

struc =

name: 'one'

***: 'f'

moneys: [123]

>>

需要注意的是,在結構陣列的賦值過程中,如果需要將元胞陣列賦值給結構陣列需要用符號」}」。

map容器是乙個快速鍵查詢資料結構,可以提供多種方法對其中的個體元素進行尋訪。相當於python中的鍵值對,不同的是乙個map的鍵的資料型別必須是一致的。

map是map類中的物件,有三個唯讀的預設屬性。需要注意的是在示例化map物件之後keytype、和valuetype就不能修改,即乙個map能接受到的鍵值對的型別在建立map時就固定了。

map類的唯讀屬性

屬性含義count

儲存鍵值對的個數

keytype

表示key的資料型別

valuetype

表示value的資料型別,兩種以上時為any

> map_null = containers.map()

map_null =

map (具有屬性):

count: 0

keytype: char

valuetype: any

>> map_null(1) = 1 % 空map的例項map_null的鍵應該是char

錯誤使用 containers.map/subsasgn

指定的 key 型別與此容器所需的型別不匹配。

>> map_null('1') = 1

map_null =

map (具有屬性):

count: 1

keytype: char

valuetype: any

>> mounth = ;v = ;

>> rainmap = containers.map(mounth,v)

rainmap =

map (具有屬性):

count: 2

keytype: char

valuetype: double

>> rainmap('g')='g'

錯誤使用 containers.map/subsasgn

指定的 value 型別與此容器所需的型別不匹配。

>>

可以通過keys方法檢視map中的所有鍵,values方法檢視map中的所有值。返回的cell陣列。

>> rainmap.keys()

ans =

'feb'

'jan'

'g'>> rainmap.values()

ans =

[363] [327] [3]

>>

map只能通過鍵尋訪對應的值,需要注意一下幾點:

>> rainmap.keys()

ans =

'feb'

'jan'

'g'>> rainmap.values()

ans =

[363]

[327]

[3]>> rainmap(1)

錯誤使用 containers.map/subsref

指定的 key 型別與此容器所需的型別不匹配。

>> rainmap('f')

錯誤使用 containers.map/subsref

此容器中不存在指定的鍵。

>> rainmap.values()

ans =

[363]

[327]

在matlab中的類分為兩種:控制代碼類實體值類。map類的物件的賦值運算,其實是在建立乙個物件副本。

>> mapa = containers.map([1,2],)

mapa =

map (具有屬性):

count: 2

keytype: double

valuetype: any

>> mapb = mapa

mapb =

map (具有屬性):

count: 2

keytype: double

valuetype: any

>> mapb(3)='g'

mapb =

map (具有屬性):

count: 3

keytype: double

valuetype: any

>> mapa

mapa =

map (具有屬性):

count: 3

keytype: double

valuetype: any

類似於python中的dataframe,但是每一列的資料不要求是同一型別,而且行名和列名不需要指定為數字。

>>  name = ;

height = ';

tables = table(name,height,'rowname',);

>> tables

tables =

name height

______ ______

1'tom'

[177]

22'jack'

[160]

>> tables.properties

ans =

description: ''

variabledescriptions: {}

variableunits: {}

dimensionnames:

userdata:

rownames:

variablenames:

>>

>> tables(:,'name') % 'name'列

ans =

name

______

1'tom'

22'jack'

>> tables(1,:) % 第1行

ans =

name height

_____ ______

1'tom'

[177]

>> tables('22',:) % '1'行

ans =

name height

______ ______

22'jack'

[160]

>> tables(:,1:2)

ans =

name height

______ ______

1'tom'

[177]

22'jack'

[160]

>> tables.height

ans =

[177]

[160]

matlab資料型別

數字 字元與字串 都用單引號 s a str i love matlab machine learning.abs s 絕對值函式,可以用來檢視字元的ascii char 65 ascii轉換成字元 num2str 65 數字轉換成字串 3.矩陣 a 1 2 3 4 5 2 3 2 7 b a 轉置...

matlab資料型別

matlab中支援的資料型別包括 邏輯 logical 字元 char 數值 numeric 元寶陣列 cell 結構體 structure table 函式控制代碼 function handle 該型別變數值為1或0 matlab的字元型輸入需使用單引號,字串儲存為字元陣列,每個元素佔乙個asc...

Matlab資料型別

對於numeric的單個數值,預設的資料型別是double,用whos檢視更具體的型別為1 1 double array 只是對於像2.0000這樣的數值matlab直接顯示為2,運算時也當作整形來對待,但並非是嚴格意義上的interger。嚴格意義上,不同型別的數值是不能一起運算的,需要型別轉換,...