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,需要占用一定的存储空间。