我试图在matlab中访问数组的一些元素。请考虑以下情况:
a = [1 2 3;4 5 6;7 8 9]
b = [1 2;2 1]
我想从a访问索引(1,2)和(2,1)的元素。我尝试使用(b)等。但我试过的方法都没有。
如何在不使用循环的情况下在matlab中完成此操作?
如果你能在matlab中为这些基础知识推荐一些好书,那将会很有帮助。
答案 0 :(得分:1)
首先,使用sub2ind
将您的下标转换为索引:
dim1sub = b(:,1);
dim2sub = b(:,2);
ind = sub2ind(size(a), dim1sub, dim2sub)
获得指数后
a(ind)
会给你:
ans =
2
4
有关矩阵索引的详细信息,请参阅here。
答案 1 :(得分: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