2.1 矩阵
矩阵定义
由 m 行 n 列 构成的数组称为 (m×n) 阶矩阵。
定义规则
-
使用方括号
[]定义矩阵 -
列分隔符:逗号
,或空格 -
行分隔符:分号
;或回车键Enter
示例
matlab
a = [a11 a12 a13; a21 a22 a23] a = [a11, a12, a13; a21, a22, a23]
以上定义了一个 2×3 阶矩阵 a
元素类型
aᵢⱼ 可以是:
-
数值
-
变量(需先赋值)
-
表达式(可以任意组合)
-
字符串(每行字母个数须相等)
注意:字符串矩阵调用时,缺省状态按行顺序取字母,如
a(1)表示第一行第一个字母。
常用矩阵函数
| 函数命令 | 说明 |
|---|---|
size(a)[d1,d2,d3,...] = size(a) |
求矩阵大小。对 m×n 二维矩阵:第一个为行数 m,第二个为列数 n;对多维矩阵:第 N 个为第 N 维长度 |
| cat(k, a, b) |
矩阵合并。 • k=1:合并形如 [a;b](行添加,要求列数相等)• k=2:合并形如 [a,b](列添加,要求行数相等)• 以此类推,n 维合并要求 n-1 维相等 |
| fliplr(a) | 矩阵左右翻转 |
| flipud(a) | 矩阵上下翻转 |
|
rot90(a) rot90(a,k) |
矩阵逆时针旋转 90°(k 参数:逆时针旋转 90°×k 度) |
| flipdim(a,k) | 沿指定维数翻转。k=1:上下翻转;k=2:左右翻转 |
|
tril(a) tril(a,k) |
下三角部分(含对角线)。k=0 时取标准下三角;k 为正/负表示对角线向上/下移动 |
|
triu(a) triu(a,k) |
上三角部分(含对角线)。k 参数设置同上 |
|
diag(a) diag(a,k) |
生成对角矩阵或取出对角元素。k 参数设置对角线偏移量 |
| repmat(a,m,n) | 矩阵复制。以 a 为单位复制成 m×n 的矩阵块 |
meshgrid(s,t)[u,v]=meshgrid(s,t) |
生成网格坐标矩阵。u:按行顺序取 s 的元素,重复排列;v:按列顺序取 t 的元素,重复排列 |
|
eye(a) eye(a,k) |
生成 a 阶单位方阵;k 参数生成 a×k 阶单位矩阵(取前 k 列,不足补 0) |
|
ones(a) ones(a,k) |
生成 a 阶全 1 方阵;k 参数生成 a×k 阶全 1 矩阵 |
|
zeros(a) zeros(a,k) |
生成 a 阶全 0 方阵;k 参数生成 a×k 阶全 0 矩阵 |
| inv(a) | 求 a 的逆矩阵 |
函数演示示例
matlab
% cat 函数演示 a = magic(3); b = pascal(3); c = cat(4, a, b); % 可尝试将 4 改为 3、2、1,观察合并效果
面向列的数据集
MATLAB 采用面向列的存储方式分析数据。列方向代表同一属性在不同时间的观测值。
示例数据集 count.dat
| Time | Location 1 | Location 2 | Location 3 |
|---|---|---|---|
| 01h00 | 11 | 11 | 9 |
| 02h00 | 7 | 13 | 11 |
| 03h00 | 14 | 17 | 20 |
| 04h00 | 11 | 13 | 9 |
| 05h00 | 43 | 51 | 69 |
| 06h00 | 38 | 46 | 76 |
| 07h00 | 61 | 132 | 186 |
| 08h00 | 75 | 135 | 180 |
| 09h00 | 38 | 88 | 115 |
| 10h00 | 28 | 36 | 55 |
| 11h00 | 12 | 12 | 14 |
| 12h00 | 18 | 27 | 30 |
| 13h00 | 18 | 19 | 29 |
| 14h00 | 17 | 15 | 18 |
| 15h00 | 19 | 36 | 48 |
| 16h00 | 32 | 47 | 10 |
| 17h00 | 42 | 65 | 92 |
| 18h00 | 57 | 66 | 151 |
| 19h00 | 44 | 55 | 90 |
| 20h00 | 114 | 145 | 257 |
| 21h00 | 35 | 58 | 68 |
| 22h00 | 11 | 12 | 15 |
| 23h00 | 13 | 9 | 15 |
| 24h00 | 10 | 9 | 7 |
数据文件内容(count.dat)
text
11 11 9 7 13 11 14 17 20 11 13 9 43 51 69 38 46 76 61 132 186 75 135 180 38 88 115 28 36 55 12 12 14 18 27 30 18 19 29 17 15 18 19 36 48 32 47 10 42 65 92 57 66 151 44 55 90 114 145 257 35 58 68 11 12 15 13 9 15 10 9 7
MATLAB 操作示例
matlab
% 加载数据 load count.dat % 查看数据维度 [n, p] = size(count) % n = 24(观测次数),p = 3(位置数量) % 创建时间轴并绘图 t = 1:n; set(0, 'defaultaxeslinestyleorder', '-|--|-.') set(0, 'defaultaxescolororder', [0 0 0]) plot(t, count) legend('Location 1', 'Location 2', 'Location 3', 0) xlabel('Time'), ylabel('Vehicle Count'), grid on
说明:以上数据是对 3 个对象 进行 24 次观测 的结果,体现了 MATLAB 按列存储和分析数据的特点。