创建、连接和扩展矩阵
最基本的MATLAB®数据结构是矩阵。矩阵是按行和列排列的二维矩形数据元素数组。元素可以是数字、逻辑值(真正的
或假
),日期和时间,字符串,分类
值,或其他MATLAB数据类型。
即使是单个数字也被存储为矩阵。例如,包含值100的变量存储为类型为1 × 1的矩阵双
.
一个= 100;谁一个
名称大小字节类属性A 1x1 8 double
构建数据矩阵
如果有一组特定的数据,可以使用方括号排列矩阵中的元素。单行数据的元素之间有空格或逗号,行之间用分号分隔。例如,创建包含四个数字元素的单行。结果矩阵的大小是1 × 4,因为它有一行和四列。这种形状的矩阵通常称为行向量。
A = [12 62 93 -8]
一个=1×412 62 93 -8
深圳=大小(一个)
深圳=1×21 4
现在用相同的数字创建一个矩阵,但将它们排列成两行。这个矩阵有两行两列。
A = [12 62;93年8]
一个=2×212 62 93 -8
深圳=大小(一个)
深圳=1×22 - 2
特殊矩阵函数
MATLAB有许多函数可以帮助创建具有特定值或特定结构的矩阵。例如,0
而且的
函数创建全0或全1的矩阵。这些函数的第一个和第二个参数分别是矩阵的行数和列数。
A = 0 (2)
一个=3×20 0 0 0 0 0 0
B = 1(2、4)
B =2×41 1 1 1 1 1 1 1 1
的诊断接头
函数将输入元素放在矩阵的对角线上。例如,创建一个行向量一个
包含4个元素。然后,创建一个4 × 4矩阵,其对角线元素是的元素一个
.
A = [12 62 93 -8];B =诊断接头(A)
B =4×412 0 0 0 0 62 0 0 0 0 93 0 0 0 0 0 -8
连接矩阵
您还可以使用方括号来附加现有的矩阵。这种创建矩阵的方法叫做连接.例如,将两个行向量连接成一个更长的行向量。
一个= 1(1、4);B = 0(1、4);C = [a b]
C =1×81 1 1 1 0 0 0 0 0
安排一个
而且B
作为矩阵的两行,使用分号。
D =[一个;B]
D =2×41 1 1 1 0 0 0 0 0
要连接几个矩阵,它们必须具有兼容的大小。换句话说,当你水平连接矩阵时,它们必须有相同的行数。当您垂直连接它们时,它们必须具有相同的列数。
例如,创建两个都有两行的矩阵。通过使用方括号将第二个矩阵水平地附加到第一个矩阵。
一个= 1(2、3)
一个=2×31 1 1 1 1 1 1
B = 0 (2, 2)
B =2×20 0 0 0
C = [a b]
C =2×51 1 1 0 0 1 1 1 0 0
连接兼容矩阵的另一种方法是使用连接函数,例如horzcat
,vertcat
,猫
.将第二个矩阵水平地附加到第一个矩阵horzcat
.
D = horzcat (A, B)
D =2×51 1 1 0 0 1 1 1 0 0
生成数字序列
的结肠
是创建元素顺序且间隔均匀的矩阵的一种方便方法。例如,创建一个行向量,其元素为从1到10的整数。
一个= 1:10
一个=1×101 2 3 4 5 6 7 8 9 10
可以使用冒号操作符创建任意范围内的数字序列,每次加1。
一个= -2.5:2.5
一个=1×6-2.5000 -1.5000 -0.5000 0.5000
要更改序列增量的值,请指定开始和结束范围值之间的增量值,用冒号分隔。
一个= 0:2:10
一个=1×60 2 4 6 8 10
要减数,请使用负数。
一个= 6:1:0
一个=1×76 5 4 3 2 1 0
也可以用非整型值递增。如果一个增量值没有均匀地划分指定的范围,MATLAB会自动在超出该范围之前所能达到的最后一个值结束序列。
一个= 1:0.2:2.1
一个=1×61.000 1.2000 1.4000 1.6000 1.8000 2.000
扩大一个矩阵
您可以将一个或多个元素添加到矩阵中,方法是将它们放在现有的行和列索引边界之外。MATLAB自动用零填充矩阵以保持它的矩形。例如,创建一个2 × 3矩阵,并通过在(3,4)位置插入一个元素向其添加额外的行和列。
A = [10 20 30;60 70 80)
一个=2×310 20 30 60 70 80
(3、4)= 1
一个=3×410 20 30 0 60 70 80 0 0 0 0 0 1
您还可以通过在现有索引范围之外插入一个新矩阵来扩展大小。
A(4:5,5:6) = [2 3;4 5]
一个=5×610 20 30 0 0 0 60 70 80 0 0 0 0 0 0 0 10 0 0 0 0 0 2 30 0 0 0 4 5
重复扩展矩阵的大小,如在为
循环时,为预期创建的最大矩阵预先分配空间是最佳实践。在没有预分配的情况下,MATLAB必须在每次大小增加时分配内存,从而减慢操作。例如,通过将矩阵的元素初始化为零,预先分配一个最多容纳10,000行和10,000列的矩阵。
一个= 0(10000、10000);
如果以后需要预分配额外的元素,可以通过在矩阵索引范围外赋值或将另一个预分配的矩阵连接到来扩展它一个
.
空数组
MATLAB中的空数组是至少一个维度长度等于零的数组。空数组对于以编程方式表示“无”的概念很有用。例如,假设您想找到一个向量的所有小于0的元素,但是没有。的找到
函数返回一个空的索引向量,表示它没有找到任何小于0的元素。
A = [1 2 3 4];印第安纳州=找到(< 0)
Ind = 1x0空双行向量
许多算法包含可以返回空数组的函数调用。允许空数组作为函数参数在这些算法中流动,而不是将它们作为特殊情况处理,这通常是有用的。如果确实需要自定义空数组处理,可以使用isempty
函数。
TF = isempty(印第安纳州)
TF =逻辑1