本节说明 MATLAB 中矩阵的加减、矩阵乘法与数组(逐元素)乘法、按行或按列汇总,以及用左除 \ 求解线性方程组。加减要求两侧尺寸相同;乘除须区分带点与不带点两套语义,与运算符及矩阵索引中的尺寸概念一致。

加减与两类乘除

加减在对应位置运算,两侧矩阵须同尺寸。乘法与除法有两类:

  • 不带点:按线性代数规则(如矩阵乘法)。
  • 带点:数组运算,在对应位置计算,两侧尺寸通常须一致。

A*B 与 A.*B

A = [1 2 3; 4 5 6];
B = [7 8; 9 10; 11 12];

A * B     % 2×3 乘 3×2 → 2×2
% A .* B  % 尺寸不同,会报错

A*B 要求 A 的列数等于 B 的行数。.* 要求两矩阵同尺寸。同尺寸时可对比:

A = [1 2 3; 4 5 6];
A .* A      % 逐元素平方
A * A'      % 2×3 乘 3×2 → 2×2
A .* A =
     1     4     9
    16    25    36

A * A' =
    14    32
    32    77

成绩表示例

scores = [78 92 85;
          63 70 88;
          90 81 79;
          45 60 72;
          82 95 93];

subject_mean = mean(scores)
each_total   = sum(scores, 2)
overall      = sum(scores, 'all')
subject_mean =
   71.6   79.6   83.4

each_total =
   255
   221
   250
   177
   270

sum(scores) 与 mean(scores) 默认沿列汇总;沿行汇总须指定第二个参数 2;对整个数组求一个标量可用 'all'。

左除解方程组

求解 Ax = b 时,宜优先使用左除 A \ b,在数值上通常比显式求逆再相乘更稳定、更高效:

MATLAB 线性方程组求解示例运行
% 2x + 3y = 8
%  x +  y = 3
A = [2 3; 1 1];
b = [8; 3];
x = A \ b
x =
    1
    2

常用函数

函数作用
det(A)行列式
inv(A)逆矩阵(解方程优先用 \)
sum(A) sum(A,2)按列 / 按行求和
mean(A) mean(A,2)按列 / 按行求平均
max(A) min(A)各列最大 / 最小
size(A)返回 [行数 列数]
numel(A)元素总个数
cumsum(A)沿列累加
diff(A)沿列相邻差分

自查

  • A.*B 为何通常要求同尺寸,而 A*B 只要求 A 的列数等于 B 的行数?
  • sum(M) 与 sum(M,2) 的汇总方向是否相同?
  • 解 Ax = b 应使用 A\b 还是 A/b?
  • 实数矩阵下 M' 与 M.' 是否相同?

本节说明了矩阵加减、两类乘除、sum / mean 的方向参数及左除求方程组。下一节介绍数组函数:size、排序、变形、linspace 等整块操作。