1、创建 :行向量,列向量,矩阵
% 创建行向量
a1 = [1 2 3 4 5]
a2 = [1,2,3,4,5]
a3 = 1:1:5 % start:step:end 当start>end时,step应为负数
a4 = linspace(1,5,5) % linspace(start,end,num),num为一共有多少个元素
% 创建列向量
b1 = [1;2;3]
b2 = [1,2,3]' % 把行向量转置为列向量
% 创建基础矩阵
c1 =[1,2,3;4,5,6;7,8,9]
c2 = [1 2 3
4 5 6
7 8 9]
c3 = [a1,a2,a3] % 1*15:1行15列
c4 = [a1;a2;a3] % 3*5:3行5列
c5 = [a1,a2;a3,a4] % 2*10:2行10列
% 创建特殊矩阵
% (1) ones()函数:产生全为1的矩阵,ones(n):产生n*n维的全1矩阵,ones(m,n):产生m*n维的全1矩阵;
% (2) zeros()函数:产生全为0的矩阵;
% (3) rand()函数:产生在(0,1)区间均匀分布的随机阵;
% (4) eye()函数:产生单位阵;
% (5) randn()函数:产生均值为0,方差为1的标准正态分布随机矩阵。
2、取值:矩阵的取值计数是先列后行
a1(5) % ans = 5
c1(4) % ans = 2:矩阵c1的第4个数
c1(1,2) % ans = 2:矩阵c1的第一行第二列
c1(:,2) % ans = [2 5 8]':矩阵c1的第2列
c1(2,:) % ans = [3 4 5]:矩阵c1的第2行
c1(1:2,:) % ans = [1 2 3;4 5 6]:矩阵c1的第一行和第二行
size(c1) % ans = 3 3 --size:获取数组的行数和列数
length(c5) % ans = 10 --length:数组长度(即行数或列数中的较大值)
numel(c1) % ans = 9 --numel:元素总数
sum(c1) % ans = 12 15 18 --对每列进行求和
3、基本运算
常见的矩阵运算有算术运算,关系运算,逻辑运算。优先级依次降低。
(1)算术运算
- 加(+),减(-),数乘
- 乘,点乘(内积)
(1)乘:C = A*B :
条件:矩阵A的行数与矩阵B的列数相同;
矩阵C的行数等于矩阵A的行数,矩阵C的列数等于矩阵B的列数;
矩阵C的第m行n列元素值等于矩阵A的m行元素与矩阵B的n行元素对应值积的和。
注:A B ≠ B A 矩阵不满足交换律
(2)点乘:两矩阵中相同位置的元素进行相乘运算,将积保存在原位置组成新矩阵。
注:matlab中dot只针对行向量,如果求矩阵的内积可考虑sum(dot(A,B))
dot(A, B)与A.*B等价。A B必须同型,相当于对应列的内积
A = [5,6,9;3,6,7]
B = [1,2,3;4,5,6;7,8,9]
C = [2,3,4;3,3,3;4,5,2]
>> A*B
92 112 132
76 92 108
>> B*A
错误使用 *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。
>> A.*B
矩阵维度必须一致。
>> B.*C
2 6 12
12 15 18
28 40 18
>> C.*B
2 6 12
12 15 18
28 40 18
- 除(matlab特有):左除(\)、右除(/)
一般情况下,方程A ∗ X = B 的解是X = A\ B,而方程X ∗ A = B 的解是X = B / A 。
计算左除A\B时,A的行数要与B的行数一致,计算右除A/B时,A的列数要与B的列数一致。
如果A是非奇异的,则可用inv(A)表示A的逆矩阵
A=[1 2 3;5 8 6;3 2 3];
B=[8 6 9;4 3 7;1 2 3];
C1 = A./B
D1 = B.*C1
C2 = A.\B
C1 =
0.1250 0.3333 0.3333
1.2500 2.6667 0.8571
3.0000 1.0000 1.0000
D1 =
1 2 3
5 8 6
3 2 3
C2 =
8.0000 3.0000 3.0000
0.8000 0.3750 1.1667
0.3333 1.0000 1.0000
% 计算X*B=A
X = A/B
X = A*inv(B)
>> A*inv(B)
0.0000 -0.0000 1.0000
1.4000 -2.4000 3.4000
0.4000 0.0000 -0.2000
>> A/B
0 0 1.0000
1.4000 -2.4000 3.4000
0.4000 0.0000 -0.2000
- 其他常见计算:
1、矩阵的幂函数:
(1)A.^2表示A的每个元素平方
(2)A^2表示两个A相乘,等价于A*A
2、det(A):求矩阵的行列式
3、inv(A):求矩阵的逆矩阵
4、rank(A):求矩阵的秩(矩阵线性无关的行数与列数称为矩阵的秩)
5、trace(A):求迹矩阵的迹(矩阵的对角线元素之和,也等于矩阵的特征值之和)
6、矩阵或向量的范数:用来度量矩阵或向量在某种意义下的长度.(V可是向量也可以是矩阵)
(1)norm(V)或norm(V,2):计算向量V的2-范数;cond(A)或cond(A,2) 计算矩阵A的2-范数数下的条件数
(2)norm(V,1):计算向量V的1-范数;cond(A,1) 计算矩阵A的1-范数下的条件数;
(3)norm(V,inf):计算向量V的∞-范数;cond(A,inf) 计算矩阵A的 ∞-范数下的条件数
7、矩阵的特征值与特征向量:
(1) E=eig(A):求矩阵A的全部特征值,构成向量E。
(2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
(3) [V,D]=eig(A,’nobalance’):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量
8、 B = det(A)inv(A):求矩阵A的伴随矩阵B
9、B = AP:求矩阵A到B的过渡矩阵P
10、y = inv(B) * x :可求向量x在组基B下的坐标y
A=[1,2,3;4,5,6;2,3,4];
>>A.^2
1 4 9
16 25 36
4 9 16
>> A^2
15 21 27
36 51 66
22 31 40
>> A*A
15 21 27
36 51 66
22 31 40
(2)关系运算
MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。关系运算符的运算法则为:
(1) 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0;
(2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成;
(3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。
(3)逻辑运算
MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。 逻辑运算的运算法则为:
(1) 在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示;
(2) 设参与逻辑运算的是两个标量a和b,那么,a&b a,b全为非零时,运算结果为1,否则为0。 a|b a,b中只要有一个非零,运算结果为1。~a 当a是零时,运算结果为1;当a非零时,运算结果为0。
(3) 若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成;
(4) 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成;
(5) 逻辑非是单目运算符,也服从矩阵运算规则;