我想访问matlab中数组的一些元素。考虑下面的场景:访问MATLAB中数组的元素
a = [1 2 3;4 5 6;7 8 9]
b = [1 2;2 1]
我想从a中访问索引为(1,2)和(2,1)的元素。我尝试使用(b)等,但没有我尝试过的方法工作。
如何在matlab中完成而不使用循环?
如果你能在matlab中为这些基础知识推荐一些好书,这将是有帮助的。
我想访问matlab中数组的一些元素。考虑下面的场景:访问MATLAB中数组的元素
a = [1 2 3;4 5 6;7 8 9]
b = [1 2;2 1]
我想从a中访问索引为(1,2)和(2,1)的元素。我尝试使用(b)等,但没有我尝试过的方法工作。
如何在matlab中完成而不使用循环?
如果你能在matlab中为这些基础知识推荐一些好书,这将是有帮助的。
首先,使用sub2ind
转换你的下标来索引:
dim1sub = b(:,1);
dim2sub = b(:,2);
ind = sub2ind(size(a), dim1sub, dim2sub)
之后,你有索引
a(ind)
会给你:
ans =
2
4
有关更多信息,请参见here上矩阵索引。
或只是'a(sub2ind(size(a),b(:, 1),b(:, 2)))'在一行中...... –
@EitanT当然,但我通常不喜欢one-内线在回答问题时。它们使它看起来比它更复杂。 – HebeleHododo
通过使用Matlab,您可以访问具有扫描矩阵的所有列的线性索引的矩阵。所以在你的情况(与3x3)a(2,1)=a(2)
和a(1,2)=a(4)
。 @HebeleHododo提供的答案将您的行和列索引并将它们转换为矩阵a
的线性索引。请记住,如果您想索引不同大小的矩阵,则需要一个不同的线性索引。
此外,还有大量的在网上提供,以帮助学习MATLAB在http://www.mathworks.com/help/matlab/index.html#language-fundamentals,或者您可以键入doc help
在命令窗口中的信息
的可能重复[如何选择一个子矩阵(没有任何特定的图案)在Matlab的](http://stackoverflow.com/q/13091193/1336150)。 –