-
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