MATLAB數學建模必備知識

  • Ctrl + R–註釋

  • Ctrl + T–取消註釋

  • Clear–清除工作區變量

  • Clc–清除命令行窗口

  • Display可顯示變量或者字符串,且不受分號影響

  • 使用strcat拼接字符串

  • 使用['字符串1',‘字符串2’]拼接字符串

  • 使用num2str()將數字轉化爲字符串:

    例:

c=100;
num2str( c )
'100'
  • input 會受分號影響:
A = input('請輸入一個整數:');
請輸入一個整數:1
>> A = input('請輸入一個整數:')
請輸入一個整數:1

A =

     1
  • MATLAB矩陣有兩種寫法:

寫到一行,各行用分號隔開:

>> A = [1 1 1;1 1 1;2 2 2;2 2 2]
A =
     1     1     1
     1     1     1
     2     2     2
     2     2     2

寫到不同行:

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

最後一行末尾的分號可要可不要

>> a = [1 2 3;
		4 5 6;
		7 8 9;]
a =
     1     2     3
     4     5     6
     7     8     9
  • MATLABsum的易錯點:

    1.向量:無論是行向量還是列向量都是直接求和
    2.矩陣:由於MATLAB中對矩陣的操作都是按列操作,所以sum求和默認對每一列求和:

a =
     1     2     3
     4     5     6
     7     8     9
>> sum(a)
ans =
    12    15    18

sum(a,1)表示按列求和

>> sum(a,1)
ans =
    12    15    18

sum(a,2)表示按行求和

>> sum(a,2)
ans =
     6
    15
    24
  • 提取矩陣指定的行或列數:
    假如行數或者列數太多,不知道有多少行或者列,可以使用end命令
    A(2:end,:)–提取第二行到最後一行
    A(1:end-1,:)–提取第一行到倒數第二行
    A( : )–提取矩陣所有元素,默認按列拼接到一起
>> a(:)
ans =
     1
     4
     7
     2
     5
     8
     3
     6
     9
  • size函數返回矩陣的行數和列數(而不是矩陣的元素個數,對於向量也同樣處理)
>> size(a)
ans =
     3     3

我們可以把返回的行數和列數保存到矩陣裏面:

>> A = [1 2 3;4 5 6;7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
>> [r,c] = size(A)
r =
     3
c =
     3

我們也可以只返回行數或者列數。
返回行數:

>> r = size(A,1)

r =

     3

返回列數:

>> c = size(A,2)

c =

     3

  • 使用repmat(A,m,n)命令複製矩陣:

將矩陣A複製2行1列:

>> repmat(A,2,1)

ans =

     1     2     3
     4     5     6
     7     8     9
     1     2     3
     4     5     6
     7     8     9

將矩陣A複製3行2列:

>> repmat(A,3,2)

ans =

     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
  • MATLAB在矩陣的運算中," * "和“/”分別代表矩陣之間相乘和相除(維數可以不同)

A*B等價於A矩陣的每一行與B矩陣的每一列對應元素分別相乘再相加

>> A = [1 2;3 4]
>> B = [4 5; 6 7]
>> A*B
ans =
    16    19
    36    43

A/B等價於A*inv(B)AB的逆矩陣相乘

>> A/B
ans =
    2.5000   -1.5000
    1.5000   -0.5000

我們可以用B的逆矩陣驗證:

>> A*inv(B)
ans =
    2.5000   -1.5000
    1.5000   -0.5000

完全一致。
兩個維數相同的矩陣對應的乘除法使用".*"和“./”,表示對應元素直接相乘和相除

>> A = [1 2;3 4]
>> B = [4 5; 6 7]
>> A.*B
ans =
     4    10
    18    28
>> A./B
ans =
    0.2500    0.4000
    0.5000    0.5714

將一個矩陣乘以一個常數,那麼點乘" * “或者叉乘” . * "都可以

  • 如果要將一個矩陣中的每個元素都乘方,那麼必須用點乘:
>> A = [1 2;3 4]
>> A.^2
ans =
     1     4
     9    16

不帶點表示矩陣A乘以矩陣A,將按行和列對應元素相乘再相加。

>> A^2
ans =
     7    10
    15    22
  • 使用prod函數將矩陣的某一行或者某一列相乘:

prod(A,1)表示將矩陣A按列相乘

>> A
A =
     1     2
     3     4
>> prod(A,1)
ans =
     3     8

prod(A,2)表示將矩陣按行相乘

>> prod(A,2)
ans =
     2
    12
  • MATLAB中使用eig()命令求特徵值和特徵向量,它將返回兩個矩陣,第一個表示特徵向量,第二個表示特徵值。

    只有方陣(行數和列數相同的矩陣纔有特徵值和特徵向量)

>> A
A =
     1     2
     3     4
>> [v,r] = eig(A)
v = //特徵向量
   -0.8246   -0.4160
    0.5658   -0.9094
r = //特徵值
   -0.3723         0
         0    5.3723
  • 使用find函數返回向量或者矩陣中元素不爲0的位置的索引
>> X = [0 2 0 5 0 5 6 0 -9];
>> index = find(X)
index =
     2     4     6     7     9

也可以返回指定幾個不爲0的位置索引

>> index = find(X,2)
index =
     2     4

對於矩陣則按列顯示:

A =
     1     2     0
     0     5     6
     7     8     0
>> index = find(A)
index =
     1
     3
     4
     5
     6
     8

我們也可以將返回的元素保存到行和列中:

>> [a,b] = find(A)
a =
     1
     3
     1
     2
     3
     2
b =
     1
     1
     2
     2
     2
     3

其中a,b是一一對應的。

  • find函數因爲查找的是大小不爲0的位置的索引,所以通常配合>,<或者==來篩選,將返回一個邏輯矩陣(1爲真,0爲假)
A =
    -1     2     0
    -5     6     0
     4    -7     5
>> A>0
ans =
  3×3 logical 數組
   0   1   0
   0   1   0
   1   0   1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章