MATLAB【如何在 MATLAB 中进行矩阵运算】


前言

矩阵运算是 MATLAB 的核心功能,也是它区别于其他编程语言的最大优势——MATLAB 对矩阵操作做了极致优化,语法简洁且运算高效。


安装环境配置:MATLAB下载安装教程https://blog.csdn.net/dxt0731/article/details/156277731

一、矩阵基础运算(最常用)

先明确两个核心概念:

  • 矩阵运算:按线性代数规则计算(如矩阵乘法需满足维度匹配);
  • 逐元素运算:矩阵对应位置元素单独计算(需加 . 前缀)。
1. 基础算术运算
% 定义两个测试矩阵
A = [1 2 3; 4 5 6; 7 8 9];  % 3×3 矩阵
B = [9 8 7; 6 5 4; 3 2 1];  % 3×3 矩阵
C = [1; 2; 3];               % 3×1 列向量

% 1. 矩阵加减(维度必须完全相同)
D = A + B;  % 对应元素相加
E = A - B;  % 对应元素相减

% 2. 矩阵乘法 vs 逐元素乘法
F = A * B;   % 矩阵乘法(A的列数=B的行数,3×3 × 3×3 = 3×3)
G = A .* B;  % 逐元素乘法(对应位置相乘,需加 "."% 3. 矩阵除法(解方程 A*X=B 或 X*A=B)
H = A \ B;   % 左除,等价于 inv(A)*B(A可逆时),解 A*X=B
I = A / B;   % 右除,等价于 A*inv(B),解 X*B=A
J = A ./ B;  % 逐元素除法(对应位置相除,需加 "."% 4. 标量与矩阵运算(自动广播)
K = A * 2;   % 所有元素×2
L = A + 10;  % 所有元素+10

% 输出关键结果
disp('矩阵乘法 A*B:'); disp(F);
disp('逐元素乘法 A.*B:'); disp(G);
disp('左除 A\B:'); disp(H);
2. 矩阵转置/共轭转置
A = [1+2i 3; 4 5-6i];  % 含复数的矩阵

% 转置(仅交换行列,保留虚数符号)
AT = A.';  
% 共轭转置(转置+虚数取共轭,常用在工程计算中)
AH = A';   

disp('原矩阵 A:'); disp(A);
disp('普通转置 A.'':'); disp(AT);
disp('共轭转置 A'':'); disp(AH);
3. 矩阵幂运算
A = [1 2; 3 4];

% 矩阵幂(A*A*...*A,n次矩阵乘法)
A_power = A^3;  % 等价于 A*A*A
% 逐元素幂(每个元素单独取n次方)
A_elem_power = A.^3;  

disp('矩阵幂 A^3:'); disp(A_power);
disp('逐元素幂 A.^3:'); disp(A_elem_power);

二、矩阵进阶运算(线性代数核心)

这些是工程计算、数据分析中高频使用的矩阵操作,MATLAB 提供了专用函数:

A = [1 2 3; 4 5 6; 7 8 9];
B = [1 2; 3 4; 5 6];  % 3×2 矩阵

% 1. 行列式(仅方阵可用)
det_A = det(A);  

% 2. 逆矩阵(仅可逆方阵可用,行列式≠0% 若矩阵不可逆,可用 pinv 求伪逆
if det(A) ~= 0
    inv_A = inv(A);
else
    inv_A = pinv(A);  % 伪逆(通用,非方阵也可用)
end

% 3. 秩(矩阵的秩)
rank_A = rank(A);  

% 4. 特征值与特征向量
[V, D] = eig(A);  % V=特征向量矩阵,D=特征值对角矩阵

% 5. 奇异值分解(SVD,通用,非方阵也可用)
[U, S, V] = svd(B);  

% 6. 迹(方阵主对角线元素和)
trace_A = trace(A);  

% 7. 矩阵求范数(衡量矩阵大小)
norm_A_2 = norm(A);    % 2-范数(默认,最大奇异值)
norm_A_1 = norm(A,1);  % 1-范数(列和最大值)

% 输出关键结果
disp('A的行列式:'); disp(det_A);
disp('A的秩:'); disp(rank_A);
disp('A的特征值:'); disp(diag(D));  % 提取对角元素(特征值)

三、实用技巧与注意事项

1. 维度匹配检查

矩阵运算最常见错误是「维度不匹配」,可先用 size() 检查维度:

A = [1 2; 3 4];
B = [5 6 7];
% 检查维度
size_A = size(A);  % 返回 [2 2](行数 列数)
size_B = size(B);  % 返回 [1 3]
% 若要做矩阵乘法,需满足 size(A,2) == size(B,1)
if size(A,2) == size(B,1)
    C = A * B;
else
    disp('维度不匹配,无法进行矩阵乘法!');
end
2. 大型矩阵运算优化
  • 避免循环,优先用「向量化运算」(MATLAB 对矩阵操作优化远优于循环);
  • zeros()/ones() 预分配矩阵内存,提升运算速度:
    % 预分配1000×1000矩阵(比动态扩展快10倍以上)
    big_mat = zeros(1000, 1000);  
    for i = 1:1000
        big_mat(i,:) = i:1000+i-1;
    end
    
3. 特殊矩阵生成

常用特殊矩阵可直接用内置函数生成,无需手动输入:

eye_mat = eye(3);    % 3×3单位矩阵(主对角线为1)
zeros_mat = zeros(2,3);  % 2×30矩阵
ones_mat = ones(3,2);    % 3×21矩阵
rand_mat = rand(3);      % 3×3随机矩阵(元素0~1

总结

  1. MATLAB 矩阵运算分两类:矩阵运算(按线性代数规则,如 */^/\)和逐元素运算(加 . 前缀,如 .*/.^/./);
  2. 进阶线性代数运算(逆、特征值、SVD等)直接调用 inv()/eig()/svd() 等内置函数,无需手动实现;
  3. 运算前用 size() 检查维度匹配,大型矩阵需预分配内存(zeros()),优先向量化运算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值