一、MATLAB矩阵基础
在MATLAB中,矩阵是核心数据结构,所有数值运算均围绕矩阵展开。创建矩阵的基础语法为:用中括号[]包裹元素,行内元素用空格/逗号分隔,行与行之间用分号;分隔。
matlab
% 创建2×3矩阵
A = [1 2 3; 4 5 6];
% 创建3×3单位矩阵
B = eye(3);
% 创建3×3全1矩阵
C = ones(3);
% 创建随机矩阵(元素0-1之间)
D = rand(2,2);
二、矩阵基本运算(加减乘除)
1. 矩阵加减法
运算规则:仅同维度矩阵可进行加减运算,对应位置元素相加减。
matlab
% 定义两个同维度矩阵
A = [1 2; 3 4];
B = [5 6; 7 8];
% 矩阵加法
C = A + B; % 结果:[6 8; 10 12]
% 矩阵减法
D = A - B; % 结果:[-4 -4; -4 -4]
% 标量与矩阵加减(广播机制)
E = A + 2; % 所有元素加2,结果:[3 4; 5 6]
注意 :若矩阵维度不匹配,MATLAB会报错Matrix dimensions must agree,需先确认矩阵行列数一致。
2. 矩阵乘法(*)
运算规则:前矩阵列数=后矩阵行数才可相乘,结果矩阵维度为"前矩阵行数×后矩阵列数"。
matlab
% 定义符合乘法规则的矩阵
A = [1 2 3; 4 5 6]; % 2×3矩阵
B = [7 8; 9 10; 11 12]; % 3×2矩阵
% 矩阵乘法
C = A * B; % 结果:[1×7+2×9+3×11 1×8+2×10+3×12;
% 4×7+5×9+6×11 4×8+5×10+6×12]
% 最终:[58 64; 139 154]
% 标量与矩阵乘法
D = A * 2; % 所有元素×2,结果:[2 4 6; 8 10 12]
3. 矩阵除法(\ 和 /)
MATLAB中矩阵除法分左除(\)和右除(/),本质是求解线性方程组:
- 左除 A\B :等价于求解
A*X=B的解X - 右除 A/B :等价于求解
X*B=A的解X
matlab
% 定义可逆矩阵
A = [1 2; 3 4];
B = [5; 6];
% 左除:求解A*X=B
X1 = A \ B; % 结果:[-4; 4.5]
% 右除示例
C = [7 8; 9 10];
X2 = C / A; % 等价于 C*inv(A)
三、矩阵点运算(./ .* .^)
点运算(元素级运算)是MATLAB特有的便捷操作,核心是对应位置元素独立运算,无需满足矩阵维度匹配规则(仅需维度相同或其中一个为标量)。
1. 点乘法(.*)
matlab
A = [1 2; 3 4];
B = [5 6; 7 8];
% 点乘:对应元素相乘
C = A .* B; % 结果:[1×5 2×6; 3×7 4×8] = [5 12; 21 32]
2. 点除法(./ 和 .\)
matlab
% 点右除:A元素 ÷ B对应元素
D = A ./ B; % 结果:[1/5 2/6; 3/7 4/8] ≈ [0.2 0.333; 0.428 0.5]
% 点左除:B元素 ÷ A对应元素
E = A .\ B; % 结果:[5/1 6/2; 7/3 8/4] = [5 3; 2.333 2]
% 标量点除
F = A ./ 2; % 所有元素÷2,结果:[0.5 1; 1.5 2]
3. 点幂运算(.^)
matlab
% 元素级幂运算
G = A .^ 2; % 每个元素平方,结果:[1 4; 9 16]
H = A .^ B; % 对应元素幂运算,结果:[1^5 2^6; 3^7 4^8]
四、矩阵转置(' 和 .')
1. 普通转置(')
共轭转置,适用于复数矩阵(实数矩阵等价于普通转置):
matlab
% 实数矩阵转置
A = [1 2 3; 4 5 6];
A_trans = A'; % 结果:[1 4; 2 5; 3 6]
% 复数矩阵共轭转置
B = [1+2i 3+4i; 5+6i 7+8i];
B_conj = B'; % 结果:[1-2i 5-6i; 3-4i 7-8i]
2. 非共轭转置(.')
仅转置不共轭,专为复数矩阵设计:
matlab
B_trans = B.'; % 结果:[1+2i 5+6i; 3+4i 7+8i]
五、逆矩阵(inv())
1. 定义与使用
逆矩阵仅适用于方阵且行列式≠0 (可逆矩阵/非奇异矩阵),满足 A*inv(A)=eye(n)(单位矩阵)。
matlab
% 定义可逆方阵
A = [1 2; 3 4];
% 求逆矩阵
A_inv = inv(A); % 结果:[-2 1; 1.5 -0.5]
% 验证:A×逆矩阵=单位矩阵
I = A * A_inv; % 结果:[1 0; 0 1]
2. 常见报错处理
若执行inv(A)报错Matrix is singular to working precision,说明矩阵行列式=0(奇异矩阵),无法求逆,可检查矩阵是否为方阵、行列式是否为0。
六、行列式(det())
行列式是方阵的标量属性,仅适用于方阵,MATLAB中用det()函数计算:
matlab
% 2×2矩阵行列式
A = [1 2; 3 4];
det_A = det(A); % 计算:1×4 - 2×3 = -2
% 3×3矩阵行列式
B = [1 2 3; 4 5 6; 7 8 9];
det_B = det(B); % 结果:0(奇异矩阵,无法求逆)
七、实战案例:综合运算
matlab
% 综合运算示例
clear; clc; % 清空变量和命令行
% 1. 创建矩阵
A = [2 5; 1 3];
B = [4 1; 2 7];
% 2. 基础运算
C = A + B; % 加法
D = A * B; % 矩阵乘法
E = A .* B; % 点乘法
% 3. 转置与逆矩阵
A_trans = A'; % 转置
A_inv = inv(A); % 逆矩阵
% 4. 行列式
det_A = det(A); % 行列式=2×3-5×1=1
% 5. 求解线性方程组 A*X=B
X = A \ B;
% 输出结果
disp('矩阵A:'); disp(A);
disp('矩阵B:'); disp(B);
disp('A+B:'); disp(C);
disp('A*B:'); disp(D);
disp('A.*B:'); disp(E);
disp('A的转置:'); disp(A_trans);
disp('A的逆矩阵:'); disp(A_inv);
disp('A的行列式:'); disp(det_A);
disp('A\B的解:'); disp(X);
八、注意事项
- 矩阵乘法()和点乘法(. )是最易混淆的操作:
*遵循矩阵运算规则,.*是元素级运算; - 求逆矩阵前务必确认矩阵是方阵且行列式≠0,否则会报错;
- 转置操作中,实数矩阵用
'和.'结果一致,复数矩阵优先用.'避免共轭; - 矩阵除法优先使用左除(\),求解线性方程组时精度更高、速度更快。
总结
- MATLAB矩阵基础运算中,加减要求维度一致,乘法要求前矩阵列数=后矩阵行数,点运算(./、.*、.^)是元素级独立运算;
- 转置分共轭转置(')和非共轭转置(.'),逆矩阵(inv())仅适用于行列式≠0的方阵,行列式用det()计算;
- 矩阵除法中左除(\)用于求解AX=B,右除(/)用于求解XB=A,实际应用中左除更常用。