2.4 MATLAB的矩阵
用一个矩阵可以表示多种数据结构,当矩阵是1×1维时,它表示一个标量,当矩阵只有一行或只有一列,它表示一个向量。
2.4.1 矩阵的建立
在MATLAB中建立一个最简单的矩阵是使用矩阵构造函数算子 “[ ]”。创建一个行矩阵用逗号或空格来分隔每一个元素,创建一个多行矩阵,每一行之前以 “ ; ” 间隔。
函数 | 说明 |
ones(n ); ones(n, m) | 建立一个元素都为1的矩阵 |
zeros(n ); zeros(n, m) | 建立一个元素都为0的矩阵 |
eye(n);eye(n, m) | 建立一对角线元素为1,其他元素都为0的矩阵 |
diag( v);diag(X);diag(v,k); diag(X , k) | 将一个向量变成一个对角矩阵,或求一个矩阵的对角元素 |
magic(n) | 建立一个方阵使得它的每一行,每一列,和对角线元素的和都相等 |
rand(n);rand(n , m) | 建立一个均匀分布的随机矩阵,元素值在0,1之间 |
randn(n);randn(n , m) | 建立一个标准正态分布的随机矩阵 |
randperm(n) | 建立一个随机排列的指定整数向量 |
2.4.2 矩阵的操作
1、矩阵合并
(1)横向合并:C=[A B]
要求:横向合并的矩阵的行数要相同
(2)纵向合并:C=[A;B]
要求:纵向合并的矩阵的列数要相同
(3)函数
函数 | 说明 |
cat(dim,A,B) | 在指定方向dim 上合并A和B矩阵,如果dim=1为横向合并,dim-2为纵向合并 |
horzcat(A, B) | 横向合并矩阵 |
vertcat(A,b) | 纵向合并矩阵 |
repmat(A, m, n) | 将矩阵复制,合并成新矩阵 |
blkdiag(A,B) | 已知矩阵合并成对角矩阵 |
说明:
- repmat(A, m, n):是整个矩阵一块进行复制复制,纵向将A矩阵复制m次,横向将A矩阵复制n次。
2、矩阵拆分
如:
A=[2 1 3 5; 5 4 6 9; 7 8 9 5;2 5 8 3]
B=A(:,2:4) %提取矩阵A中的第2列和第4列组成矩阵B
C=A([1 3],[2 4]) %提取矩阵A中的第1行和第3行,第2列和第4列元素组成矩阵c
D=A([1:3],[2:4]) %提取矩阵A中的1至3行,2至4列中元素组成新矩阵D
E=A([1:3;4 5 7;2:4]) %提取矩阵A中单下标为1至3的元素为第一行,下标为4,5,7的元素为第二行,下标为2~4的为第三行组成矩阵E
代码中,逗号前表示行数,逗号后表示列数-----A(行数,列数)
2.4.3 矩阵运算相关函数
det( ) | 求方阵行列式的值 |
transpose( ) 或 " ‘ " | 求矩阵的转置矩阵 |
inv( ) | 求逆矩阵(有条件) |
inv( ) | 求广义逆矩阵 |
rank( ) | 求矩阵的秩 |