1

我正在尝试访问 matlab 中数组的某些元素。考虑以下场景:

a = [1 2 3;4 5 6;7 8 9]

b = [1 2;2 1]

我想从 a 访问具有索引 (1,2) 和 (2,1) 的元素。我尝试使用 a(b) 等。但我尝试的方法都没有奏效。

如何在不使用循环的情况下在 matlab 中完成?

如果您可以为matlab中的此类基础知识推荐一些好书,那也会很有帮助。

4

2 回答 2

1

首先,使用 将您的下标转换为索引sub2ind

dim1sub = b(:,1);
dim2sub = b(:,2);

ind = sub2ind(size(a), dim1sub, dim2sub)

获得索引后

a(ind)

会给你:

ans =

     2
     4

有关矩阵索引的更多信息,请参见此处

于 2013-01-24T15:46:53.497 回答
0

Matlab 允许您访问具有线性索引的矩阵,该索引扫描矩阵的所有列。因此,在您的情况下(使用 3x3)a(2,1)=a(2)a(1,2)=a(4). @HebeleHododo 提供的答案采用您的行和列索引并将它们转换为矩阵的线性索引a。请记住,如果要索引不同大小的矩阵,则需要为其设置不同的线性索引。

此外,在http://www.mathworks.com/help/matlab/index.html#language-fundamentals有很多在线信息可帮助您学习 matlab,或者您可以doc help在命令窗口中输入

于 2013-01-24T16:42:22.097 回答