matlab矩阵求和函数(矩阵所有元素求和的公式)

matlab矩阵求和函数(矩阵所有元素求和的公式)

创建、串联、扩展矩阵

最基本的 MATLAB?? 数据结构体是矩阵。矩阵是按行和列排列的数据元素的二维矩形数组。元素可以是数字、逻辑值(true 或 false)、日期和时间、字符串或者其他 MATLAB 数据类型。即使一个数字也能以矩阵的形式存储。例如,包含值 100 的变量存储为 double 类型的 1×1 矩阵。

Name Size Bytes Class Attributes

A 1×1 8 double

构建数据矩阵

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

A = 1×4 12 62 93 -8

sz = 1×2 1 4

现在再用这些数字创建一个矩阵,但排成两行。此矩阵有两行和两列。

A = 2×2 12 62 93 -8

sz = 1×2 2 2专用矩阵函数

MATLAB 中有许多函数可以帮助您创建具有特定值或特定结构的矩阵。例如,zeros 和 ones 函数可以创建元素全部为零或全部为一的矩阵。这些函数的第一个和第二个参数分别是矩阵的行数和列数。

A = 3×2 0 0 0 0 0 0

B = 2×4 1 1 1 1 1 1 1 1

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

B = 4×4 12 0 0 0 0 62 0 0 0 0 93 0 0 0 0 -8串联矩阵

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

C = 1×8 1 1 1 1 0 0 0 0

要将A和B排列为一个矩阵的两行,请使用分号。

D = 2×4 1 1 1 1 0 0 0 0

要串联两个矩阵,它们的大小必须兼容。也就是说,水平串联矩阵时,它们的行数必须相同。垂直串联矩阵时,它们的列数必须相同。例如,水平串联两个各自包含两行的矩阵。

A = 2×3 1 1 1 1 1 1

B = 2×2 0 0 0 0

C = 2×5 1 1 1 0 0 1 1 1 0 0

串联矩阵的另一种方法是使用串联函数,如horzcat,它可以水平串联两个兼容的输入矩阵。

D = 2×5 1 1 1 0 0 1 1 1 0 0生成数值序列

colon是创建元素连续且均匀分布的矩阵的便捷方式。例如,创建一个行向量,其元素是从 1 到 10 的整数。

A = 1×10 1 2 3 4 5 6 7 8 9 10

可以使用冒号运算符创建在任何范围内以 1 为增量的数字序列。

A = 1×6 -2.5000 -1.5000 -0.5000 0.5000 1.5000 2.5000

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

A = 1×6 0 2 4 6 8 10

要递减,请使用负数。

A = 1×7 6 5 4 3 2 1 0

还可以按非整数值递增。如果增量值不能均分指定的范围,MATLAB 会在超出范围之前在可以达到的最后一个值处自动结束序列。

A = 1×6 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000扩展矩阵

通过将一个或多个元素置于现有行和列索引边界之外,可以将它们添加到矩阵中。MATLAB 会自动用 0 填充矩阵,使其保持为矩形。例如,创建一个 2×3 矩阵,然后在 (3,4) 的位置插入一个元素,使矩阵增加一行一列。

A = 2×3 10 20 30 60 70 80

A = 3×4 10 20 30 0 60 70 80 0 0 0 0 1

还可以通过在现有索引范围之外插入新矩阵来扩展其大小。

A = 5×6 10 20 30 0 0 0 60 70 80 0 0 0 0 0 0 1 0 0 0 0 0 0 2 3 0 0 0 0 4 5

要重复扩展矩阵的大小,例如在for循环中,通常最好要为预计创建的最大矩阵预分配空间。如果没有预分配空间,MATLAB 必须在每次大小增加时分配内存,因此会降低操作速度。例如,通过将矩阵的元素初始化为零,预分配一个最多容纳 10000 行和 10000 列的矩阵。

如果之后还要预分配更多元素,可以通过在矩阵索引范围之外指定元素或将另一个预分配的矩阵与A串联来进行扩展。

空数组

MATLAB 中的空数组是指至少有一个维度的长度等于零的数组。空数组可用于以编程方式表示“无”的概念。例如,假设要查找一个向量中小于 0 的所有元素但没有找到。find函数将返回一个空的索引向量,表示未找到任何小于 0 的元素。

ind = 1×0 empty double row vector

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

TF = logical 1

matlab矩阵求和函数(矩阵所有元素求和的公式)

数组索引

在 MATLAB?? 中,根据元素在数组中的位置(索引)访问数组元素的方法主要有三种:按位置索引、线性索引和逻辑索引。

按元素位置进行索引

最常见的方法是显式指定元素的索引。例如,要访问矩阵中的某个元素,请依序指定该元素的行号和列号。

A = 4×4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

e = 10

e是A中位于 3,2 位置(第三行第二列)的元素。

您还可以在一个向量中指定多个元素的索引,从而一次引用多个元素。例如,访问A的第二行中的第一个和第三个元素。

r = 1×2 5 7

要访问某个行范围或列范围内的元素,请使用colon。例如,访问A中第一到三行、第二到四列中的元素。

r = 3×3 2 3 4 6 7 8 10 11 12

计算r的另一种方法是使用关键字end指定第二直至最后一列。通过此方法,您可以直接指定最后一列,而不必知道A中到底有多少列。

r = 3×3 2 3 4 6 7 8 10 11 12

如果要访问所有行或所有列,只使用冒号运算符即可。例如,返回A的整个第三列。

r = 4×1 3 7 11 15

通常,您可以使用索引来访问 MATLAB 中任何数组的元素,而不管其数据类型或维度如何。例如,直接访问datetime数组的列。

t = 2×5 datetime 01-Jan-2018 01-Feb-2018 01-Mar-2018 01-Apr-2018 01-May-2018 01-Jan-2019 01-Feb-2019 01-Mar-2019 01-Apr-2019 01-May-2019

march1 = 2×1 datetime 01-Mar-2018 01-Mar-2019

对于更高维度的数组,可以扩展语法以匹配数组维度。假设有一个随机的 3×3×3 数值数组。访问位于该数组第一页中第二行第三列的元素。

e = 0.5469使用单个索引进行索引

访问数组元素的另一种方法是只使用单个索引,而不管数组的大小或维度如何。此方法称为线性索引。虽然 MATLAB 根据定义的大小和形状显示数组,但实际上数组在内存中都存储为单列元素。我们可以使用矩阵来直观地理解这一概念。下面的数组虽然显示为 3×3 矩阵,但 MATLAB 将它存储为单列,由A的各列顺次连接而成。存储的向量包含由元素12、45、33、36、29、25、91、48、11组成的序列,可以用单个冒号全部显示。

A = 3×3 12 36 91 45 29 48 33 25 11

Alinear = 9×1 12 45 33 36 29 25 91 48 11

例如,A的第 3,2 个元素是25,您可以使用语法A(3,2)访问它。您也可以使用语法A(6)访问此元素,因为25是存储的向量序列中的第六个元素。

e = 25

elinear = 25

线性索引在视觉上可能不太直观,但在执行某些不依赖于数组大小或形状的计算时很有用。例如,您可以轻松地对A的所有元素求和,而无需指定sum函数的第二个参数。

s = 330

sub2ind和ind2sub函数可用于在数组的原始索引和线性索引之间进行转换。例如,计算A的第 3,2 个元素的线性索引。

linearidx = 6

从线性索引转换回行和列形式。

row = 3col = 2使用逻辑值进行索引

使用 true 和 false 逻辑指示符也可以对数组进行索引,在处理条件语句时尤其便利。例如,假设您想知道矩阵A中的元素是否小于另一个矩阵B中的对应元素。当A中的元素小于B中的对应元素时,小于号运算符返回元素为1的逻辑数组。

A = 2×3 1 2 6 4 3 6

B = 2×3 0 3 7 3 7 5

ind = 2×3 logical array 0 1 1 0 1 0

现在已经知道满足条件的元素的位置,可以使用ind作为索引数组来检查各个值。MATLAB 将ind中值 1 的位置与A和B中的对应元素进行匹配,并在列向量中列出它们的值。

Avals = 3×1 2 3 6

Bvals = 3×1 3 7 7

MATLAB 中的 is 函数还返回逻辑数组,指示输入中的哪些元素满足特定条件。例如,使用ismissing函数检查string向量中的哪些元素是缺失值。

ind = 1×6 logical array 0 0 1 0 0 1

假设要查找非缺失值元素的值。将~运算符和索引向量ind结合使用即可实现此目的。

strvals = 1×4 string “A” “B” “D” “E”

内容来自matlab中文论坛

通知

由于同学们都十分关心2020年数维杯国际赛证书邮寄问题,从即日起,数模君在文章末尾公布当日已邮寄证书的快递单号,同学们请注意查收!(该活动针对于未接收到2020数维杯国际赛证书的队伍)4月29日已寄出的单位及邮寄编号:

沈阳航空航天大学 73154153275601

西南交通大学犀浦校区 73154160434963

西南交通大学九里校区 73154161593269

西南财经大学(柳林校区) 73154178290536

西安工程大学 73154184373233

西安高新科技学 73154184374495

西安交通大学兴庆校区 73154218678689

西安交通大学创新港校区 73154218680171

新疆工程学院 73154225007140

太原科技大学 73154229234336

厦门理工学院 73154237366600

西安外国语大学长安校区 73154242523284

西安外国语大学 73154250071104

厦门工学院 73154250072106

北华大学 73154254725096

汕头大学 73154250086320

华南理工大学 73154241619825

金陵科技学院 73154237380406

西南财经大学 73154233177757

宁波诺丁汉大学 73154229247949

河北工程大学 73154224892756

曲阜师范大学 73154224891315

matlab矩阵求和函数(矩阵所有元素求和的公式)

往期推荐

【专栏】MATLAB大神常用的四招必杀技!快来查漏补缺了!

2021-04-18

好家伙!matlab给我安吐了!不知道你是否也遇到了这些问题…

2021-04-14

【专栏】手把手教你设置数据分析,学会即能攻克整类题型!

2021-04-16

发表评论

登录后才能评论