總結一下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。嚴格意義上,不同型別的數值是不能一起運算的,需要型別轉換,...