Matlab數據類型


 

一、數值類型
 
1、實數
 
Matlab的數值類型分為三種,整形,單精度浮點型和雙精度浮點型,具體的情況如下。
 
 
有幾個地方需要注意一下:
 
  • 系統默認的數值類型是double的,所以使用double時可以省略double符號
  • double類型的數值與其他類型的數值運算時,結果為其他類型的數值,single類型的數值不能和整型直接運算,各種不同位數的整形之間也不能直接運算。

    因為系統默認的數據類型是雙精度浮點,所以在將變量設置為整數時需要進行轉換,matlab提供了如下的轉化函數。

函數
運算法則
例子
floor
向下取整
floor(1.4)=1;floor(3.5)=3;floor(-3.5)=-4
ceil
向上取整
ceil(1.4)=2;ceil(3.5)=3;ceil(-3.5)=-3
round
取最接近的整數,如果小數部分是0.5,則向絕對值大的方向取整
round(1.4)=1;round(3.5)=4;round(-3.5)=-4
fix
向0取整
fix(1.4)=1;fix(3.5)=3;fix(-3.5)=-3
2、復數
 
復數由實部和虛部兩部分構成,在Matlab中,字符i或j默認作為虛部標志,關於復數的相關函數如下:
 
函數
說明
函數
說明
complex(a,b)
構造以a為實部,以b為虛部的復數
i,j
虛部標識
real(z)
返回復數z的實部
image(z)
返回復數z的虛部
abs(z)
返回復數z的模
angle(z)
返回復數z的輔角
conj(z)
返回復數z的共軛復數
 
 
3、無窮量(Inf)和非數值量(NaN)
 
Matlab中使用Inf和-Inf分別表示正無窮大和負無窮大,NaN表示非數值量。正負無窮大一般是由於運算溢出產生,非數值量則是由於類似0/0或Inf/Inf類型的非正常運算產生。
 
二、字符與字符串
 
Matlab將文本作為特征字符串或簡單地當做字符串,但是實際存儲的是字符串的ASCII碼。abs函數可以獲得字符串的具體值,使用方法如下:
 
>> a='abc'
 
a =
 
abc
 
>> abs(a)
 
ans =
 
    97    98    99
三、結構
 
Matlab中也存在與C語言類似的結構這種類型,一個結構可以通過字段存儲多個不同類型的數據。結構中的各個字段可以是不同的類型。
 
1、創建結構對象
 
有兩種創建結構的方法,一種是逐一輸入一個結構的各個屬性,例如下面創建stu1的過程;另一種是使用struct函數,例如創建stu2的過程。
 
>> stu1.name='xing';
>> stu1.sno='123';
>> stu1
 
stu1 =
 
    name: 'xing'
     sno: '123'
 
>> stu2=struct('name','sno','xiao','234')
 
stu2 =
 
    name: 'sno'
    xiao: '234'
2、訪問結構對象
 
使用結構名.屬性名的方式可以獲取結構的屬性。
 
 
ans =
 
xing
3、連接結構對象
 
兩個結構可以連接起來,但是要連接的這個兩個結構的對應屬性的類型應該相同。
 
>> stu1.name='xing';
>> stu1.sno=int16(123);
>> stu2.name='xiao';
>> stu2.sno=int16(456);
>> stu=[stu1,stu2]
 
stu =
 
1x2 struct array with fields:
 
    name
    sno
 
>> stu(1)
 
ans =
 
    name: 'xing'
     sno: 123
四、單元數組
 
單元數組是一種廣義矩陣。每一個單元可以包括一個任意數組,如數值數組、
字符數組、結構體數組或另外一個單元數組,因而每一個單元可以具有不同的尺寸和內存。
1、創建單元數組
 
有兩種創建單元數組的方法:通過賦值語句或cell函數創建。
 
(a)使用賦值語句創建單元數組:單元數組使用花括號”{} ”來創建,使用“,”或空格來分隔單元,使用“;”來分行。
 
>> A={'x',[2;3;6];10,2*pi}
 
A =
 
    'x'     [3x1 double]
    [10]    [    6.2832]
(b)使用cell函數創建空單元數組
 
>> B=cell(2,2)
 
B =
 
    []    []
    []    []
2、訪問單元數組
 
在單元數組中,單元和單元中的內容屬於不同范疇,這意味着訪問單元和訪問單元中的內容是兩個不同的操作。對於單元數組C,C(m,n)指的是單元數組中第m行第n列的單元,而C{m,n}則是指的是第m行第n列的單元中的內容。
 
>> A(1,1)
 
ans =
 
    'x'
 
>> A(1,2)
 
ans =
 
    [3x1 double]
 
>> A{1,2}
 
ans =
 
     2
     3
     6
3、單元數組的合並
 
>> C={'a','b';'c','d'}
 
C =
 
    'a'    'b'
    'c'    'd'
 
>> D={'1','2'}
 
D =
 
    '1'    '2'
 
>> E={A;B}
 
E =
 
    {2x2 cell}
    {2x2 cell}
 
>> E{1,1}
 
ans =
 
    'x'     [3x1 double]
    [10]    [    6.2832
五、映射容器
 
Matlab中的映射容器就是Map類,這里的Map類與java的Map類類似,也是一個key對應着一個value,Map類的所有對象都有三個屬性:
 
  • Count:表示Map中存儲的鍵值對的數量
  • KeyType:表示Map對象中包括的key的類型
  • ValueType:表示Map中的數據類型
1、創建Map對象
 
>> mapObj=containers.Map({1,2},{'xing','xiao'})
 
mapObj =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
2、查看和讀取Map對象
 
可以通過使用keys函數查看Map對象中包含的所有鍵;通過values函數查看所有的值。
 
%獲取所有的鍵
>> keys(mapObj)
 
ans =
 
    [1]    [2]
 
%獲取所有的值
>> values(mapObj)
 
ans =
 
    'xing'    'xiao'
 
%獲取指定鍵的值
>> mapObj(1)
 
ans =
 
xing
 
%獲取多個值
>> values(mapObj,{1,2})
 
ans =
 
    'xing'    'xiao'
3、編輯Map對象
 
(1)添加鍵值對
 
>> mapObj(3)='ming'
 
mapObj =
 
  Map with properties:
 
        Count: 3
      KeyType: double
    ValueType: char
 
>> values(mapObj)
 
ans =
 
    'xing'    'xiao'    'ming'
(2)刪除鍵值對
 
>> remove(mapObj,2)
 
ans =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
 
>> values(mapObj)
 
ans =
 
    'xing'    'ming'
(3)修改鍵值對
 
如果需要在值不變的情況下對鍵名進行修改,首先要刪除鍵名和對應的值,然后再添加一個有正確鍵名的新條目。通過覆蓋原有的值,可以在鍵名不變的情況下對值進行修改。
 
>> remove(mapObj,1)
 
ans =
 
  Map with properties:
 
        Count: 1
      KeyType: double
    ValueType: char
 
>> mapObj(11)='xing'
 
mapObj =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
 
>> mapObj(3)='aaa'
 
mapObj =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
 
>> keys(mapObj)
 
ans =
 
    [3]    [11]
 
>> values(mapObj)
 
ans =
 
    'aaa'    'xing'
 
六、數據類型之間的轉換
 
類型識別函數:
 
函數
功能
函數
功能
iscell
判斷是否為單元數組
isnumeric
判斷是否為數值數組
isreal
判斷是否為實數
ischar
判斷是否為字符數組
isstr
判斷是否為字符串
isfloat
判斷是否為浮點數
isstruct
判斷是否為結構數組
whos
列舉變量類型及相關數據
類型轉換函數:
 

函數
功能
函數
功能
dec2bin
十進制轉為二進制
int2str
整數轉為字符串
num2str
數值轉為字符串
str2double
字符串轉為double


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM