MATLAB矩阵是二维数组,可以看成由多行向量叠起来的表。写法仍是行内空格或逗号、行间分号:
m = [1 2 3; 4 5 6; 7 8 9]m =
1 2 3
4 5 6
7 8 9MATLAB创建矩阵可以手写、用 zeros / ones / eye / rand 批量生成,也可以把小块拼成大块,再用转置换行列方向。
手写矩阵
- 整体用方括号
[ ]包住 - 同一行内用空格或逗号分隔
- 换行用分号
;,也可以在编辑器里直接回车换行
m1 = [1 2 3; 4 5 6]
m2 = [1, 2, 3; 4, 5, 6]
m3 = [1 2 3
4 5 6]zeros、ones、eye、rand
小矩阵可以手敲。需要整块零、单位阵或随机数时,用内置函数更省事:
zeros(3) % 3×3 全 0
zeros(2,4) % 2×4 全 0
ones(4,3) % 4×3 全 1
eye(4) % 4×4 单位阵
rand(3,5) % 3×5,(0,1) 均匀随机只给一个参数时生成方阵,两个参数时是行数 × 列数:
A = ones(2,3)A =
1 1 1
1 1 1拼接
方括号也能把已有矩阵横拼或竖拼。维度对不上时会报错:
A = [1 2; 3 4];
B = [5 6; 7 8];
C = [A B] % 横向 → 2×4
D = [A; B] % 纵向 → 4×2E = cat(1, A, B) % 沿第 1 维(行)拼
F = cat(2, A, B) % 沿第 2 维(列)拼G = repmat(A, 2, 3) % 把 A 按 2×3 块平铺转置
A = [1 2 3; 4 5 6];
A'ans =
1 4
2 5
3 6A' 对复数是共轭转置。只要换行列、不要共轭时用 A.'。实数矩阵下两者结果相同。
注意事项
- 每一行元素个数必须相同,
[1 2 3; 4 5]会报错。 - 调用函数要写括号:
zeros3),不能写成zeros 3。 zeros(...)是全零矩阵,空矩阵是[],不是一回事。