-
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
-
在
MATLAB
中sum
的易錯點: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)
—A
與B
的逆矩陣相乘
>> 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