MATLAB矩阵运算完,加减乘除/点运算/转置/逆矩阵/行列式

一、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);

八、注意事项

  1. 矩阵乘法()和点乘法(. )是最易混淆的操作:* 遵循矩阵运算规则,.* 是元素级运算;
  2. 求逆矩阵前务必确认矩阵是方阵且行列式≠0,否则会报错;
  3. 转置操作中,实数矩阵用'.'结果一致,复数矩阵优先用.'避免共轭;
  4. 矩阵除法优先使用左除(\),求解线性方程组时精度更高、速度更快。

总结

  1. MATLAB矩阵基础运算中,加减要求维度一致,乘法要求前矩阵列数=后矩阵行数,点运算(./、.*、.^)是元素级独立运算;
  2. 转置分共轭转置(')和非共轭转置(.'),逆矩阵(inv())仅适用于行列式≠0的方阵,行列式用det()计算;
  3. 矩阵除法中左除(\)用于求解AX=B,右除(/)用于求解XB=A,实际应用中左除更常用。
相关推荐
rit84324993 小时前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
我找到地球的支点啦3 小时前
通信扩展——扩频技术(超级详细,附带Matlab代码)
开发语言·matlab
Dev7z16 小时前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
fengfuyao98518 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心18 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab
rit843249920 小时前
基于MATLAB的环境障碍模型构建与蚁群算法路径规划实现
开发语言·算法·matlab
hoiii18720 小时前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab
yong999021 小时前
MATLAB面波频散曲线反演程序
开发语言·算法·matlab
yugi9878381 天前
基于MATLAB的一键式EMD、EEMD、CEEMD和SSA信号去噪实现
开发语言·matlab·信号去噪
youcans_1 天前
【STM32-MBD】(15)Simulink 模型开发之三相互补 PWM
stm32·单片机·嵌入式硬件·matlab·foc