本篇介绍 Matlab 中 行向量(数组)、列向量、矩阵 的创建、运算和取元素等基本操作。全文较长,对于有基础的同学可以根据目录选择性食用。
目录
1. 创建数组
1.1 自定义数组
Matlab中,同行间的数字用 逗号 或 空格 隔开,比如创建一个 数组(行向量):
x = [5,2,4,1,3]
x = [5 2 4 1 3]
不同行之间则用 分号 隔开,比如创建一个 列向量 :
x = [5;2;4;1;3]
1.2 创建等差数列的数组
① 语句 [a:b:c]
用于表示 从a到c,步长为b 的等差数列,例如:
x = [1:2:10] % 从1到10,步长为2
备注:
[1] 步长:两项之间的距离
[2] Matlab中,%后的内容为注释
在很多情况下,我们要创建 连续数字的数组 ,即步长为1。此时可省去中间的步长项,即 [a:c]
,默认步长为1,例如:
x = [1:5]
② 在a~c之间取n个数组成等差数列,可以使用 linspace(a,c,n)
语句:
x = linspace(1,10,4)
2. 数组的基本操作
2.1 取数组中的元素
① 取数组x中的第i个元素,用 x(i)
表示。例如:
x = [5 2 4 1 3];
a = x(2)
备注:
Matlab中,代码后加上分号表示不显示该句代码的运行结果。
② 取数组x的第a~c个元素,用 x(a:c)
表示。例如:
x = [5 2 4 1 3];
a = x(2:4)
最后一个元素的关键字是 end
。所以从第a个元素取到最后一个元素,用 x(a:end)
表示。例如:
x = [5 2 4 1 3];
a = x(2:end)
也可引入步长的方法等间隔取数,用 x(a:b:c)
表示。例如:
x = [5 2 4 1 3];
a = x(2:2:5)
③ 取数组x的第a、b、c、d (…)个元素,用 x([a b c d])
表示。例如:
x = [5 2 4 1 3];
a = x([2 3 5])
④ 取数组x中小于n的元素,用 x(find(x<n))
表示。例如:
x = [5 2 4 1 3];
a = x(find(x<4))
2.2 给数组中的某一位赋新值
将数组x的第i个元素赋值为A,用 x(i) = A
表示。例如:
x = [5 2 4 1 3];
x(3) = 10
2.3 给数组中的元素排序
① 将数组x升序排序,用 sort(x,'ascend')
表示。例如:
x = [5 2 4 1 3];
y = sort(x,'ascend')
② 将数组x降序排序,用 sort(x,'descend')
表示。例如:
x = [5 2 4 1 3];
y = sort(x,'descend')
备注:
不加第二个参数,即sort(x)
默认是升序排序。
3. 运算符
Matlab中的运算符有以下这些(加减乘除幂):
(除法分为左除和右除;还有点乘、点除、点幂。)
a+c a-c
a*c a.*c c*a c.*a
a/c a./c c/a c./a
a\c a.\c c\a c.\a
a^c a.^c c^a c.^a
3.1 向量与标量的运算
例:a = [1,2,3,4] c = 2
不能进行的运算:
c/a a^c c^a
3.2 向量与向量的运算
例:a = [1,2,3,4] c = [2,3,4,5]
不能进行的运算:
a*c c*a a^c c^a
4. 矩阵
4.1 创建特殊矩阵
① 创建空矩阵
x = []
② 创建m行n列的零矩阵,用 x = zeros(m,n)
表示。例如:
x = zeros(3,3)
③ 创建m行n列的元素全为1的矩阵,用 x = ones(m,n)
表示。例如:
x = ones(4,5)
④ 创建m行n列的单位矩阵,用 x = eye(m,n)
表示。例如:
x = eye(3,3)
备注:
单位矩阵通常用字母 I 表示,eye 谐音 I。
4.2 创建矩阵
同行的数字之间用 逗号或空格 隔开,换行用 分号 隔开。
例如:创建矩阵
A
=
[
1
2
3
4
5
6
7
8
9
10
11
12
]
A = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 &10 &11 &12 \end{bmatrix}
A=⎣⎡159261037114812⎦⎤
A = [1,2,3,4;5,6,7,8;9,10,11,12]
A = [1 2 3 4;5 6 7 8;9 10 11 12]
也可以使用 冒号 表示连续的数列
A = [1:4;5:8;9:12]
5. 矩阵的基本操作
5.1 取矩阵中的一部分
① 取矩阵A的第i行,用 A(i,:)
表示。例如:
A = [1,2,3,4;5,6,7,8;9,10,11,12];
B = A(2,:)
备注:
这里的:
其实是前文中a:c
连续取第a位到第c位的格式。a和c均不给出,则表示取最开头到结尾。因此这里表示取第2行整行。
② 取矩阵A的第j列,用 A(:,j)
表示。例如:
A = [1,2,3,4;5,6,7,8;9,10,11,12];
B = A(:,2)
③ 取矩阵A第i1~i2行、第j1~j2列构成的矩阵,用 A(i1:i2,j1:j2)
表示。例如:
A = [1,2,3,4;5,6,7,8;9,10,11,12];
B = A(1:3,1:2)
④ 逆序获取矩阵A第i1~i2行构成的矩阵,用 A(i2:-1:i1,:)
表示。例如:
A = [1,2,3,4;5,6,7,8;9,10,11,12];
B = A(3:-1:1,:)
5.2 删除矩阵中的一部分
① 删除矩阵A的第i1~i2行,用 A(i1:i2,:) = []
表示。例如:
A = [1,2,3,4;5,6,7,8;9,10,11,12];
A(1:2,:) = []
如果不想改变原矩阵A,可以先将矩阵A赋值到其他变量再删除:
A = [1,2,3,4;5,6,7,8;9,10,11,12];
B = A;
B(1:2,:) = []
② 删除矩阵A的第j1~j2列,用 A(:,j1:j2) = []
表示。例如:
A = [1,2,3,4;5,6,7,8;9,10,11,12];
A(:,1:2) = []
6. 矩阵的运算
6.1 矩阵运算
矩阵间运算符同前文,不再赘述。常用的有加法和乘法:
A+B
A*B
6.2 方阵的行列式、逆矩阵、特征值和特征向量
例如:对矩阵
A
=
[
1
2
−
1
−
3
]
A = \begin{bmatrix} 1 & 2 \\ -1 & -3 \end{bmatrix}
A=[1−12−3]
① 求方阵A的行列式,用 det(A)
表示:
A = [1,2;-1,-3];
d = det(A)
② 求方阵A的逆矩阵,用 inv(A)
表示:
A = [1,2;-1,-3];
B = inv(A)
③ 求方阵A的特征值和特征向量,用 eig(A)
表示:
这个函数的使用需要注意:
将运算结果赋值给一个变量,得到的是特征值向量:
A = [1,2;-1,-3];
v = eig(A)
赋值给两个变量,得到的是 特征向量矩阵 和 对角矩阵
A = [1,2;-1,-3];
[V,D] = eig(A)