创建、连接和扩展矩阵

MATLAB®最基本的数据结构是矩阵。矩阵是按行和列排列的数据元素的二维矩形数组。元素可以是数字、逻辑值(真正的)、日期和时间、字符串或其他MATLAB数据类型。

即使是单个数字也被存储为矩阵。例如,包含值100的变量存储为类型为1 × 1的矩阵

A = 100;谁一个
名称大小字节类属性A 1x1 8 double

构建数据矩阵

如果您有一组特定的数据,您可以使用方括号排列矩阵中的元素。单行数据元素之间用空格或逗号分隔,行与行之间用分号分隔。例如,创建一个包含四个数字元素的单行。结果矩阵的大小是1 × 4,因为它有一行和四列。这种形状的矩阵通常被称为行向量。

A = [12 62 93 -8]
一个=1×412 62 93 -8
sz = size(A)
深圳=1×21 - 4

现在用相同的数字创建一个矩阵,但是把它们分成两行。这个矩阵有两行两列。

A = [12 62;93年8]
一个=2×212 62 93 -8
sz = size(A)
深圳=1×22 - 2

专用矩阵函数

MATLAB有许多函数可以帮助创建具有特定值或特定结构的矩阵。例如,0而且函数创建全为0或全为1的矩阵。这些函数的第一个和第二个参数分别是矩阵的行数和列数。

A = 0 (3,2)
一个=3×20 0 0 0 0 0
B = ones(2,4)
B =2×41 1 1 1 1 1 1 1 1 1

诊断接头函数将输入元素放在矩阵的对角线上。例如,创建一个行向量一个包含四个元素。然后,创建一个4 × 4矩阵,其对角线元素是的元素一个

A = [12 62 93 -8];B = d (A)
B =4×412 0 0 0 0 62 0 0 0 0 93 0 0 0 0 0 -8

连接矩阵

您还可以使用方括号将现有的矩阵连接在一起。这种创建矩阵的方法叫做连接.例如,将两个行向量连接成一个更长的行向量。

A = ones(1,4);B = 0 (1,4);C = [a b]
C =1×81 1 1 1 0 0 0 0

安排一个而且B作为矩阵的两行,使用分号。

D = [a; b]
D =2×41 1 1 1 0 0 0 0

要连接两个矩阵,它们必须具有兼容的大小。换句话说,当你水平连接矩阵时,它们必须有相同的行数。当垂直连接它们时,它们必须具有相同的列数。例如,水平连接两个都有两行的矩阵。

A = ones(2,3)
一个=2×31 1 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,它水平连接两个兼容的输入矩阵。

D = horzcat(A,B)
D =2×51 1 1 0 0 1 1 1 0 0

生成数字序列

结肠是一种方便的方法来创建矩阵,其元素是顺序的和均匀间隔的。例如,创建一个行向量,其元素为从1到10的整数。

A = 1:10
一个=1×101 2 3 4 5 6 7 8 9 10

您可以使用冒号操作符创建任意范围内加1的数字序列。

A = -2.5:2.5
一个=1×6-2.5000 -1.5000 -0.5000 0.5000

若要更改序列增量的值,请指定起始范围值和结束范围值之间的增量值,用冒号分隔。

A = 0:2:10
一个=1×610 . 0 2 4 6 8

要递减,请使用负数。

A = 6:-1:0
一个=1×76 5 4 3 2 10

也可以使用非整数值递增。如果一个增量值没有均匀地划分指定的范围,MATLAB会自动在超出范围之前到达的最后一个值处结束序列。

A = 1:0.2:2.1
一个=1×61.000 1.2000 1.4000 1.6000 1.8000 2.0000

展开矩阵

可以将一个或多个元素添加到矩阵中,方法是将它们放置在现有的行和列索引边界之外。MATLAB自动用零填充矩阵以保持它的矩形。例如,创建一个2 × 3矩阵,并通过在(3,4)位置插入一个元素向其添加额外的行和列。

A = [10 20 30;60 70 80]
一个=2×310 20 30 60 70 80
A(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 0 4 5

重复扩展一个矩阵的大小,如在循环时,通常最好为预期创建的最大矩阵预分配空间。如果没有预分配,MATLAB必须在每次大小增加时分配内存,从而减慢运算速度。例如,通过将矩阵元素初始化为零,预分配一个最多容纳10,000行和10,000列的矩阵。

A = 0 (10000,10000);

如果稍后需要预分配额外的元素,可以通过在矩阵索引范围外分配或将另一个预分配的矩阵连接到来展开它一个

空数组

MATLAB中的空数组是至少一维长度为零的数组。空数组对于以编程方式表示“一无所有”的概念非常有用。例如,假设您想要找到一个向量中小于0的所有元素,但是没有。的找到函数返回一个空的索引向量,表明它找不到任何小于0的元素。

A = [1 2 3 4];ind = find(A<0)
Ind = 1x0空双行向量

许多算法包含可以返回空数组的函数调用。允许空数组作为函数参数在这些算法中流动,而不是将它们作为特殊情况处理,这通常是有用的。如果确实需要自定义空数组处理,则可以使用isempty函数。

TF = isempty(ind)
TF =逻辑1

相关的话题