1. 程式人生 > >MATLAB基礎學習(一)——計算基礎

MATLAB基礎學習(一)——計算基礎

參考文獻《MATLAB語言常用演算法程式集合》

MATLAB數值型別

1.變數與常量

(1)變數:是數值計算的基本單元,變數名字區分大小寫。

  • 任何MATLAB語句的執行結果都可以顯示在螢幕上,同時賦值給指定的變數,沒有指定變數時,賦值給一個特殊的變數ans
  • MATLAB總以雙精度浮點數來執行所有的運算結果。
  • 可以使用format命令控制資料的顯示格式,format隻影響結果的顯示,不影響計算與儲存。format使用見下表。
名稱 說明
format short 短格式(5位定點數)
format long 長格式(15位定點數)
format short e 短格式e方法
format long e 長格式e方法
format bank 2位十進位制格式
format short e 十六進位制格式

測試一下

>> format short 
>> test = 12.3

test =

   12.3000

>> format long
>> test = 12.3

test =

  12.300000000000001

>> 

由測試結果顯示可知:short顯示的是4位小數而不是5位,與參考書有出處,具體原因仍待考證。目前以實際測量為準。

(2)常量:指在MATLAB中已經預先定義其數值的變數。MATLAB預設常量見下表。

名稱 說明
pi 圓周率
inf 無窮大
NaN(或者nan) 代表不定值(0/0)
realmax 最大正實數
realmix 最小正實數
eps 浮點數的相對誤差
i(或者j) 虛數單位
nargin 函式實際輸入引數個數
nargout 函式實際輸出引數個數
ans 預設變數名,以應答最近一次操作運算結果

2.字串

字串作為字元陣列用單引號' '

引用到程式中。

3.元胞陣列

元胞是元胞陣列的基本組成部分。元胞可以存放任何型別任何大小的陣列,而且同一個元胞陣列中各元胞的內容可以不同。
使用花括號{ } 表示元胞陣列的內容,使用圓括號() 表示元胞元素。
使用celldisp函式可以顯示元胞陣列。

>> a = {'字串',100,ones(2,3)}

a = 

    '字串'    [100]    [2x3 double]

>> 

上述元胞陣列包括了一個字串、一個常量100、一個2*3的矩陣

>> celldisp(a)

a{1} =

字串


a{2} =

   100



a{3} =

     1     1     1
     1     1     1


>> 

可以使用celldisp函式檢視陣列內容

4.構架陣列

構架陣列也能存放各類資料,使用指標的方式傳遞數值,使用. 操作符連線結構變數名和屬性名,例如使用parameter.temperature 表示某一個物件的溫度引數,使用parameter.humidity 表示這個物件的溼度引數等。
因此該構架陣列由兩個屬性組成。

5.物件

面向物件的MTALAB語言採用了多種物件,如自動控制中常用到的,傳遞函式模型物件(tf object)、狀態空間模型物件(ss object),零極點模型物件(zpk object)

MATLAB矩陣計算

1.建立矩陣

矩陣以左方括號[開始,以右方括號]結束,每一行元素用分號; 分割,每行中每個元素用空格或者 分割。

>> a = [1,2,3;4,5,6]

a =

     1     2     3
     4     5     6

>> b = [1 2;3 4]

b =

     1     2
     3     4

>> 


繼續輸入


>> c = [a;7,8,9]

c =

     1     2     3
     4     5     6
     7     8     9

可以看到,在原來矩陣基礎上加一行,得到新矩陣c

2.訪問矩陣


- 單個元素的訪問:c(3,2),訪問第3行第2列

c =

     1     2     3
     4     5     6
     7     8     9

>> c(3,2)

ans =

     8


- 整列元素的訪問:訪問第3列元素

>> c(:,3)

ans =

     3
     6
     9 


- 整行元素的訪問:訪問第1行元素

>> c(1,:)

ans =

     1     2     3



- 整塊元素的訪問:訪問一個(2*2)的1-2行,2-3列組成的子塊矩陣

>> c(1:2,2:3)

ans =

     2     3
     5     6


3.常用特殊矩陣生成函式

函式名稱 說明
zeros() 生成元素全為0的矩陣
ones() 生成元素全為1的矩陣
rand() 生成均勻分佈隨機矩陣
randn() 生成正態分佈隨機矩陣
magic() 生成魔方矩陣
diag() 生成對角矩陣
triu() 生成上三角矩陣
tril() 生成下三角矩陣
eye() 生成單位矩陣
company() 生成伴隨矩陣
hilb() 生成Hilbert矩陣
vander() 生成vander矩陣
hankel() 生成hankel矩陣
hadamard() 生成hadamard矩陣

4.常用矩陣函式運算

函式名稱 說明
rot90() 矩陣逆時針旋轉90度
flipud() 矩陣上下翻轉
fliplr() 矩陣左右翻轉
flipdim() 矩陣的某維元素翻轉
shiftdim() 矩陣的元素移位
eig() 計算矩陣的特徵值與特徵向量
rank() 計算矩陣的秩
trace() 計算矩陣的跡
norm() 計算矩陣的範數
poly() 計算矩陣的特徵方程的根


通過eig()函式計算矩陣a的特徵向量b和特徵值c

>> a = [1,2,3;4,5,6;7,8,9]

a =

     1     2     3
     4     5     6
     7     8     9

>> [b,c] = eig(a)

b =

   -0.2320   -0.7858    0.4082
   -0.5253   -0.0868   -0.8165
   -0.8187    0.6123    0.4082


c =

   16.1168         0         0
         0   -1.1168         0
         0         0   -0.0000

>> 

5.常用矩陣分解運算函式

函式名稱 說明
eig() 矩陣的特徵值分解
qr() 矩陣的QR分解
schur() 矩陣的Schur分解
svd() 矩陣的奇異值分解
chol() 矩陣的Cholesky分解
lu() 矩陣的LU分解


通過lu()函式對矩陣a進行LU分解,得到上三角陣U、下三角陣L、置換矩陣P

>> a = [6,2,1;2,3,1;1,1,1]

a =

     6     2     1
     2     3     1
     1     1     1

>> [L,U,P] = lu(a)

L =

    1.0000         0         0
    0.3333    1.0000         0
    0.1667    0.2857    1.0000


U =

    6.0000    2.0000    1.0000
         0    2.3333    0.6667
         0         0    0.6429


P =

     1     0     0
     0     1     0
     0     0     1

>> 

如有不對的地方歡迎大家指正交流