MATLAB构造矩阵的2种方式(非常详细)
在 MATLAB 中,矩阵的构造方式有两种:一种与元胞数组相似,可以对变量直接进行赋值;另一种是使用 MATLAB 中提供的构造特殊矩阵的函数,如下表所示。
【实例 2】特殊矩阵构造示例。在命令行窗口中输入以下语句,并显示相应的输出结果。
继续在命令行窗口中输入:
【实例】在 MATLAB 中,标量有两种表示方法。在命令行窗口中输入以下语句,并显示相应的输出结果。
空矩阵可以通过赋值语句建立,如下:
如果要建立一个 0 矩阵,则可以输入以下语句:
| 函数名称 | 函数功能 |
|---|---|
| ones(n) | 构建 n×n 维的 1 矩阵(矩阵的元素全部是 1) |
| ones(m,n,…,p) | 构建 m×n×…×p 维的 1 矩阵 |
| ones(size(A)) | 构建和矩阵 A 同样大小的 1 矩阵 |
| zeros(n) | 构建 n×n 维的 0 矩阵(矩阵的元素全部是 0) |
| zeros(m,n,…,p) | 构建 m×n×…×p 维的 0 矩阵 |
| zeros(size(A)) | 构建和矩阵 A 同样大小的 0 矩阵 |
| eye(n) | 构建 n×n 维的单位矩阵 |
| eye(m,n) | 构建 m×n 维的单位矩阵 |
| eye(size(A)) | 构建和矩阵 A 同样大小的单位矩阵 |
| magic(n) | 构建 n×n 维的矩阵,其每行、每列的元素之和都相等 |
| rand(n) | 构建 n×n 维的矩阵,其元素为 0~1 均匀分布的随机数 |
| rand(m,n,…,p) | 构建 m×n×…×p 维的矩阵,其元素为 0~1 均匀分布的随机数 |
| randn(n) | 构建 n×n 维的矩阵,其元素为零均值、单位方差的正态分布随机数 |
| randn(m,n,…,p) | 构建 m×n×…×p 维的矩阵,其元素为零均值、单位方差的正态分布随机数 |
| diag(x) | 构建 n 维方阵,其主对角线元素值取自向量 x,其余元素的值都为 0 |
| diag(A,k) | 构建由矩阵 A 的第 k 条对角线的元素组成的列向量。k=0 为主对角线,k>0 为上第 k 条对角线,k<0 为下第 k 条对角线 |
| diag(x,k) | 构建(n+|k|)维的矩阵,其第 k 条对角线元素取自向量 x,其余元素都为 0,n 为向量元素数量,即 n=length(x) |
| triu(A) | 构建和 A 大小相同的上三角矩阵。主对角线上的元素为 A 中相应的元素,其余元素都为 0 |
| triu(A,k) | 构建和 A 大小相同的上三角矩阵。第 k 条对角线及其以上的元素为 A 中相应的元素,其余元素都为 0 |
| tril(A) | 构建和 A 大小相同的下三角矩阵。主对角线上的元素为 A 中相应的元素,其余元素都为 0 |
| tril(A,k) | 构建和 A 大小相同的下三角矩阵。第 k 条对角线及其以下的元素为 A 中相应的元素,其余元素都为 0 |
MATLAB建立简单矩阵
简单矩阵的建立采用矩阵构造符号——方括号“[]”,将矩阵元素置于方括号内,同行元素之间用空格或逗号隔开,行与行之间用分号“;”隔开,格式如下:matrixName = [element11, element12, element13; element21, element22, element23] matrixName = [element11 element12 element13; element21 element22 element23]【实例 1】简单矩阵构造示例,分别构造一个二维矩阵、一个行向量、一个列向量。在命令行窗口中输入以下语句,并显示相应的输出结果。
>> A = [2,3,5;3,6,10] % 使用逗号和分号构造二维矩阵
A =
2 3 5
3 6 10
>> B = [2 3 5;3 6 10] % 使用空格和分号构造二维矩阵
B =
2 3 5
3 6 10
>> V1 = [8,59,60,33] % 构造行向量
V1 =
8 59 60 33
>> V2 = [5;8;3;4;9] % 构造列向量
V2 =
5
8
3
4
9
MATLAB建立特殊矩阵
特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。常见的特殊矩阵有对称矩阵、三角矩阵和对角矩阵等。【实例 2】特殊矩阵构造示例。在命令行窗口中输入以下语句,并显示相应的输出结果。
>> OnesMatrix = ones(2)
OnesMatrix =
1 1
1 1
>> ZerosMatrix = zeros(2)
ZerosMatrix =
0 0
0 0
>> Identity = eye(2)
Identity =
1 0
0 1
>> Identity23 = eye(2, 3)
Identity23 =
1 0 0
0 1 0
>> Identity32 = eye(3, 2)
Identity32 =
1 0
0 1
0 0
继续在命令行窗口中输入:
>> Random = rand(2, 3)
Random =
0.1626 0.4984 0.3404
0.1190 0.9597 0.5853
>> Array = Random(:, 2)
Array =
0.4984
0.9597
>> Diagetlement = diag(Random)
Diagetlement =
0.1626
0.9597
>> Diagmatrix = diag(diag(Random))
Diaagmatrix =
0.1626 0 0
0 0.9597
>> Dmatrix_array = diag(Array)
Dmatrix_array =
0.4984 0
0 0
>> UpperTriangular = triu(Random)
UpperTriangular =
0.1626 0.4984 0.3404
0 0.9597 0.5853
>> LowerTriangular = tril(Random)
LowerTriangular =
0.1626 0 0
0.1190 0.9597 0
MATLAB向量、标量和空矩阵
通常情况下,矩阵包含 m 行 n 列,即 m×n。当 m 和 n 取一些特殊值时,得到的矩阵具有一些特殊的性质。1) 向量
当 m=1 或 n=1 时,即 1×n 或 m×1,建立的矩阵称为向量。例如,在命令行窗口中输入以下语句。
>> clear
>> a = [1 2 3 4 5 6]
a =
1 2 3 4 5 6
>> b = [1;2;3;4;5;6]
b =
1
2
3
4
5
6
>> whos % 调用 whos 函数查看变量 a、b 的相关信息
Name Size Bytes Class Attributes
a 1x6 48 double
b 6x1 48 double
2) 标量
当 m=n=1 时,建立的矩阵称为标量。任意以 1×1 维的矩阵形式表示的单个实数、复数都是标量。【实例】在 MATLAB 中,标量有两种表示方法。在命令行窗口中输入以下语句,并显示相应的输出结果。
>> x = 10+2i % 将复数 10+2i 赋值给变量 x
x =
10.0000 + 2.0000i
>> shape = size(x) % 查询变量 x 的形状信息
shape =
1 1
>> y = [10+2i] % 将复数 10+2i 构成的矩阵赋值给变量 y
y =
10.0000 + 2.0000i
>> shape = size(y) % 查询变量 y 的形状信息
shape =
1 1
>> x==y % 判断变量 x 和 y 是否相等,“1”表示相等,“0”表示不相等
ans =
logical
1
通过上述示例可知,单个实数或复数在 MATLAB 中都是以矩阵的形式存储的;在 MATLAB 中,单个数据或由单个数据构造的矩阵都是标量。3) 空矩阵
当 m=n=0 或 m=0 或 n=0 时,即 0×0、0×n、m×0,建立的矩阵称为空矩阵。空矩阵可以通过赋值语句建立,如下:
>> x = [] % 建立一个空矩阵
x =
[]
>> whos x % 调用 whos 函数查看变量 x 的相关信息
Name Size Bytes Class Attributes
x 0x0 0 double
如果要建立一个 0 矩阵,则可以输入以下语句:
>> z = [0 0 0;0 0 0] % 建立一个 2 行 3 列的 0 矩阵
z =
0 0 0
0 0 0
>> whos z % 调用 whos 函数查看变量 z 的相关信息
Name Size Bytes Class Attributes
z 2x3 48 double
空矩阵和 0 矩阵的本质区别在于:空矩阵内没有任何元素,因此不占用任何存储空间;而 0 矩阵则表示该矩阵中的所有元素全部为 0,需要占用一定的存储空间。
ICP备案:
公安联网备案: