Matrix position stored in a variable!
2 次查看(过去 30 天)
显示 更早的评论
Suppose A=rand(10,10) and I need to access the following elements in A: A(2,3), A(4,5), A(6,7). If the positions are stored in a variable, d=[2 3; 4 5; 6 7], how the matrix elements can be retrieved?
Well, a simple solution is the following for loop.
for i = 1 : size(b, 1)
A(b(i,1), b(i,2))
end
Any better suggestion?
0 个评论
采纳的回答
Fangjun Jiang
2011-12-11
A=magic(10);
d=[2 3; 4 5; 6 7];
B=A(sub2ind(size(A),d(:,1),d(:,2)))
Update for any size of d
A=rand(2,3,4);
d=[1 2 3;2,3,4;1,2,4];
[m,n]=size(d);
if ndims(A)~=n
error('Dimension mis-match');
end
ind=mat2cell(d,m,ones(1,n));
B=A(sub2ind(size(A),ind{:}))
3 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!