矩阵中的元素与向量中的一样,可以进行抽取引用、编辑修改等操作。
首先生成三个矩阵:
A = ceil( rand(3)*10 ); % (1,10)内均匀分布的随机三阶矩阵
B = ceil( rand(3)*10 );
C = ceil( rand(3,4)*10 );
1、矩阵的运算
(1)矩阵的加减:需要确保两个相加或者相减的矩阵具有相同维度
Y1 = A+B;
% Y1 = A.+B ; % 报错,无效运算符
Y2 = A-B;
% Y2 = A.-B ; % 报错,无效运算符
(2)矩阵的乘法运算:C=A*B。矩阵的乘法有下述特性:
①矩阵A 的列数与矩阵B的行数相同;
②矩阵C的行数等于矩阵A的行数,矩阵C的列数等于矩阵B的列数;
③矩阵第m行n列的元素值等于矩阵A第m行元素和矩阵B第n列元素对应值乘积的求和;
④AB≠BA。
Y3 = A*C; % 必须满足:A的列数 = B的行数 ,生成的序列为 A行B列
(3)矩阵的点乘运算:将两矩阵相同位置的元素相乘后保留在原位置组成新矩阵。需要满足两个矩阵大小一致。
Y4 = A.*B; % 大小一致,对应位置的元素相乘运算
(4)矩阵的左除运算:A\B,需要A与B的行数一致;
矩阵的右除运算:A/B,需要A与B的列数一致;
矩阵的点除与点乘类似。
Y5 = A\B ; % A和B行数要一致
Y6 = A.\B; % 大小一致,对应位置的元素左除运算
Y7 = A/B; % A和B列数要一致
Y8 = A./B; % 大小一致,对应位置的元素右除运算
(5)矩阵的秩:
当矩阵X有 |X| ≠ 0时,X为非奇异矩阵,即X是可逆的,Y = inv(X)存在,且有XY=E。
Y9 = inv(A); % 矩阵的逆,必须为方阵
2、矩阵元素的修改
(1)矩阵的扩充
D = [A;B]; % 使用矩阵B扩充矩阵A
(2)矩阵的删减
A(2,:)=[]; % 删除A的第二行
A(:,2)=[]; % 删除A的第二列
(3)对矩阵元素进行赋值
A(2,3)=2; % 给A的第二行第三列元素赋值为2
A(2,:)=[1 2 3]; % 对A的第二行赋值
A(:,2)=[1 2 3]; % 对A的第二列赋值
3、矩阵的变维
矩阵的变维可以通过用符号“:”和reshape()函数法进行修改,两种方法都要保证改变后矩阵元素数目和原矩阵一致。
(1)reshape(X,m,n):将已知矩阵X变维成m行n列的矩阵。
E = reshape(B,2,6);
(2)通过符号“:”对矩阵进行维度修改。
F = zeros(4,3); % 必须先设定矩阵的形状
F(:) = B(:); % 将 B 的维度改编成和 D 一样
4、矩阵的变向
(1)rot90(A):将矩阵A逆时针方向旋转90°;
rot90(A,k):将矩阵A逆时针方向旋转90°,旋转 k 次。
G = rot90(A,2); % rot90 将矩阵逆时针旋转90° ; 2 表示旋转次数
(2)fliplr(X):将矩阵X左右翻转;
flipud(X):将矩阵X上下翻转;
flipdim(X,dim):dim=1时对行进行翻转;dim=2时对列进行翻转。
H = flip(B,1); % flip和flipdim作用一样,有些版本会对flipdim警告但不影响运行
5、矩阵的抽取
(1)diag(X):抽取矩阵X的主对角线上的元素向量;
diag(X,k):抽取矩阵X的第k条对角线上的元素向量。其中k=0为主对角线,k为正整数则为上方第k条,k为负整数则为下方第k条。
J = diag(A,1);
(2)tril(X):提取X矩阵的主下三角部分;
tril(X,k):提取X矩阵第k条对角线下方的部分,包括第k条;
triu(X)和triu(X,k)使用方法与tril相同。
K = tril(magic);