Matrix Indexing.docx

上传人:b****5 文档编号:4944515 上传时间:2022-12-12 格式:DOCX 页数:10 大小:18.46KB
下载 相关 举报
Matrix Indexing.docx_第1页
第1页 / 共10页
Matrix Indexing.docx_第2页
第2页 / 共10页
Matrix Indexing.docx_第3页
第3页 / 共10页
Matrix Indexing.docx_第4页
第4页 / 共10页
Matrix Indexing.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Matrix Indexing.docx

《Matrix Indexing.docx》由会员分享,可在线阅读,更多相关《Matrix Indexing.docx(10页珍藏版)》请在冰豆网上搜索。

Matrix Indexing.docx

MatrixIndexing

MatrixIndexing

矩阵索引

在此页…

访问单个元素

线性索引

控制索引风格函数

访问多个元素

使用逻辑值的数组索引

单冒号使用不同的数组类型的索引

索引的分配

访问单个元素

要引用矩阵中的特定元素,使用下面的语法,其中A是矩阵变量指定的行数和列数。

始终指定的行和列

A(行,列)

例如,对于一个4×4魔方A,

A=magic(4)

A=

162313

511108

97612

414151

您将访问该元素在第4行,第2列的

A(4,2)

ans=

14

对于以上两个维度的数组,可以指定其他索引后的row和column指数。

请参阅MultidimensionalArrays.

线性索引

你可以参考一个MATLAB矩阵的元素用一个下标,A(k)。

MATLAB存储的矩阵和数组的形状,他们在MATLAB命令窗口中显示时的显示,但作为一列元素。

这种单一的列组成的所有的列的矩阵,每一个附加到最后。

因此,矩阵A

A=[269;428;351]

A=

269

428

351

实际上是存储在存储器中,作为序列

2,4,3,6,2,5,9,8,1

在第3行,第2列的矩阵A(值=5)的元素也可以被识别为实际的存储顺序中的元件6。

要访问这个元素,你有选择的使用标准A(3,2)的语法,或者你可以使用A(6),这被称为线性索引。

如果你提供更多的下标,MATLAB计算的存储列的索引,根据你分配给数组的尺寸。

例如,假定一个两维数组,如A具有大小[d1d2],其中d1是在阵列中的行数和d2的列数。

如果您提供的两个下标(i,j)的行列索引的偏移量是

(j-1)*d1+i

给出的表达式A(3,2),MATLAB计算A的存储列偏移量为(2-1)*3+3,或6。

访问计数列中的第六个要素值为5。

控制索引风格函数

如果你有行-列标,但要使用线性索引,你可以转换为后者使用sub2ind函数。

在3×3矩阵A用于在上一节中,sub2ind改变一个标准的行-列索引为(3,2),线性索引为6:

A=[269;428;351];

linearindex=sub2ind(size(A),3,2)

linearindex=

6

为了得到相当于一个线性索引的行列,请使用ind2sub函数:

[rowcol]=ind2sub(size(A),6)

row=

3

col=

2

访问多个元素

对于4×4矩阵A如下所示,也可以将元素A中的第四列的计算总和,通过键入

A=magic(4);

A(1,4)+A(2,4)+A(3,4)+A(4,4)

您可以减少使用冒号运算符的表达式的尺寸。

下标表达式涉及冒号指部分的矩阵。

该表达式

A(1:

m,n)

指1到m行,n列的矩阵A使用这个符号,你可以计算一个更简洁的第四列中的元素的总和:

sum(A(1:

4,4))

不连续的元素

要引用矩阵中的不连续的元素,使用冒号运算符使用的步长值。

m:

3:

n在此表达方式进行分配矩阵中的所有第三个元素。

请注意,本例中使用线性索引:

B=A;

B(1:

3:

16)=-10

B=

-1023-10

511-108

9-10612

-101415-10

MATLAB支持一种类型的数组索引,使用一个数组到另一个数组的索引。

您可以基于这种类型上的值或索引数组中的元素位置的索引。

下面是一个例子其中基于阵列B的值索引阵列A的1,3,6,7和10元素.在这种情况下,数值数组B中指定预定的元素A:

A=5:

5:

50

A=

5101520253035404550

B=[136710];

A(B)

ans=

515303550

如果你与另一向量的向量索引,索引向量的方向的履行输出:

A(B')

ans=

515303550

A1=A';A1(B)

ans=

5

15

30

35

50

如果你的索引与非向量成一个向量,形状的索引履行。

C=[136;7910];

A(C)

ans=

51530

354550

end关键字

MATLAB提供的关键字end指定的最后一个元素的数组在一个特定的维度。

不知道有多少行或列的矩阵,在你的程序的情况下,关键字是有用的。

您可以更换表达式在前面的例子

B(1:

3:

end)=-10

注意:

关键字end在MATLAB中有好几个意思。

它可用于如上面所解释的,或终止一个条件块的代码,如if和for块,或终止的嵌套函数。

指定行或列的所有元素

冒号本身是指一个矩阵的行或列中的所有元素。

使用下面的语法,你可以计算出一个4×4的魔方A的第二列中的所有元素的总和:

sum(A(:

2))

ans=

34

通过使用冒号使用线性索引,你可以参考整个矩阵中的所有元素。

这个例子显示矩阵A的所有元素,返回他们在一列分段顺序:

A(:

ans=

16

5

9

4

.

.

.

12

1

使用逻辑值的数组索引

一个合乎逻辑的数组索引指定数组A中的元素位置的索引数组,B,不是他们的值的基础上。

在这种掩码类型的操作,每一个true的元素索引阵列被视为被访问到阵列中的位置索引。

在以下的例子中,B是一个逻辑1和逻辑0的矩阵。

b确定的位置,这些元素在元素的指定的表达式A(B):

A=[123;456;789]

A=

123

456

789

B=logical([010;101;001]);

B=

010

101

001

A(B)

ans=

4

2

6

9

find

Thefind函数可以是与逻辑阵列有用,因为它返回非零元素的线性指数,其中,在B中,从而有助于解释A(B):

find(B)

ans=

2

4

8

9

逻辑索引-例1

此示例创建的逻辑数组B满足A>0.5的条件,并使用在B位置的索引为A:

rng(0,'twister');%Resettherandomnumbergenerator

A=rand(5);

B=A>0.5;

A(B)=0

A=

00.09750.15760.14190

00.278500.42180.0357

0.12700000

000.485400

00000

一个简单的方法来表达,这是

A(A>0.5)=0

逻辑索引-例2

下面的例子强调的素数幻方使用逻辑索引设置非素数为0的位置:

A=magic(4)

A=

162313

511108

97612

414151

B=isprime(A)

B=

0111

1100

0100

0000

A(~B)=0;%逻辑索引

A

A=

02313

51100

0700

0000

find(B)

ans=

2

5

6

7

9

13

用较小阵列的逻辑索引

在大多数情况下,应该有逻辑索引数组元素作为阵列被索引到相同数量的,但是这不是必需。

索引阵列可具有更小的(但不大于)尺寸:

A=[123;456;789]

A=

123

456

789

B=logical([010;101])

B=

010

101

isequal(numel(A),numel(B))

ans=

0

A(B)

ans=

4

7

8

MATLAB对待缺少的元素的索引数组,就好像它们是存在并设置为零,如在下面的阵列C:

%数组C给它相同数量的零的索引

%A的元素。

C=logical([B(:

);0;0;0]);

isequal(numel(A),numel(C))

ans=

1

A(C)

ans=

4

7

8

单冒号使用不同的数组类型的索引

当你到一个标准的MATLAB阵列使用单冒号索引,,MATLAB返回一个列向量(见下面的变量n,)。

当你的索引结构或单元阵列使用单冒号,你会得到一个以逗号分隔的列表(请参阅AccessDatainaStructureArray和AccessDatainaCellArray

创建三种类型的数组:

n=[123;456];

c={12;34};

s=cell2struct(c,{'a','b'},1);s(:

2)=s(:

1);

在每个索引使用单冒号:

n(:

)c{:

}s(:

).a

ans=ans=ans=

111

4ans=ans=

232

5ans=ans=

321

6ans=ans=

42

索引的分配

矩阵为其他矩阵赋值时,您可以使用本节中介绍的任何样式的索引。

矩阵的赋值语句也有以下的要求

在分配A(J,K,...)=B(M,N,...),下标J,K,M,N,等可以是标量,矢量,或阵列,设置所有满足以下的条件:

∙B的下标指定的数量,不包括尾随的下标为1,不超过ndims(B).

∙为A的非标量的下标指明的数目等于指定为B的非标量的下标数.例如,,A(5,1:

4,1,2)=B(5:

8)是有效的,因为双方的方程使用非标量下标相等。

∙A指定的非标量下标的顺序和长度与B指定的顺序和长度的下标为非标量并相匹配.例如,A(1:

4,3,3:

9)=B(5:

8,1:

7)是有效的,因为双方的方程(忽略了一个标量下标3)使用4个元素的下标第7元素的下标。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1