您的位置首页百科问答

matlab出现索引超出矩阵维度有哪些原因?

matlab出现索引超出矩阵维度有哪些原因?

的有关信息介绍如下:

matlab出现索引超出矩阵维度有哪些原因?

如果矩阵是一个电影院,那么矩阵索引就是每个座位的编号,每个观众都可以通过这个编号找到自己的位置,同样的,通过矩阵索引可以找到每个元素的位置。

例如,对于1*4的矩阵A=[5 6 7 8],A中第1行第2列的元素是6,记作:

A(1,2)

那么返回值为6;

说明,索引方式是使用小括号,把行序号和列序号分别作为第一个和第二个参数,这种索引方式称为下标索引(也叫组合索引)。

例如,对于1*4的矩阵A=[5 6 7 8],修改A中第1行第2列的元素为10,记作:

A(1,2)=10

那么返回值为:A=[5 10 7 8]。

除了上面所讲的下标索引,还有另一种矩阵索引方式,称为,线性索引,同样使用小括号,把元素序号作为唯一的输入参数,这里的所说的元素序号是指,把矩阵所有元素按列优先排列成一字长蛇阵,某一元素排在第n个位置,那么序号就是n;

例如,对于1*4的矩阵A=[5 6 7 8],A中第2元素是6,记作:

A(2)

那么返回值为6;

再如,对于2*3的矩阵:

B=[5 6 7

8 9 10]

B中第2元素是8,记作:

B(2)

那么返回值为8;

(此处不明白可留言交流)

除了上述的两种索引,还有一种矩阵索引的方式,称为,逻辑索引,同样使用小括号,把逻辑矩阵作为输入参数,这里的逻辑矩阵是指,与矩阵具有相同大小,并使用逻辑值表达的逻辑矩阵,在逻辑值为真的位置,返回矩阵的元素;

程序示例如下:

b=[1 2;3 4] %创建2*2的矩阵 c=[true false;true false] %逻辑矩阵用true和false表示 b(c) %逻辑索引:逻辑值为真返回对应元素,为假不返回

说明,三种矩阵索引全部说完。

sub2ind

ind2sub

这两个函数用的不多,不展开说,用到时自行查找用法即可,非常简单。

下标索引中,可以使用冒号(:)表示所有行或者所有列;

程序示例如下:

a=[1 2 3 4 5 6 7 8 9] a(1,:) %索引第1行所有列的元素,返回[1 2 3] a(:,1) %索引所有行第1列的元素,返回[1;4;7] a(:,:) %索引所有行所有列的元素,返回整个矩阵a

下标索引中,可以使用‘end’表示最后一行或者最后一列;

程序示例如下:

a=[1 2 3 4 5 6 7 8 9] a(2,end) %索引第2行最后一列的元素,返回6 a(end,3) %索引最后一行第3列的元素,返回9 a(end,end) %索引最后一行最后一列的元素,返回9

a=[1 2 3 4 5 6 7 8 9] a(1,2:3) %第1行,第2-3列,返回[2 3] a(2,[1 3]) %第2行,第1列和第3列,返回[4 6] a(3,2:end) %第3行,第2到最后一列,返回[8 9]

a=[1 2 3 4 5 6 7 8 9] a(3,4) %索引第3行第4列的元素,报错,提示:超出矩阵范围

说明,这是初学者常犯之错误

End