我有一个大型2D矩阵A
(8192x10201)和坐标列表coord
(3622x2)。我试图在每个索引处找到数组的值,并将其放入一维列表中。
我可以使用下面的for
循环,但是我想知道是否有更优雅的解决方案。
data = [];
for ii = 1:numel(coord(:,1))
data = [data; A(coord(ii,1), coord(ii,2)];
end
编辑:我测试过的东西:
1。data = A(coord)
data
是3622x2矩阵。我不确定data
中的值与coord
中的坐标如何相关。
2。data = A(coord(:,1), coord(:,2))
data
是3622x3622矩阵。我非常不确定它与“坐标”之间的关系。
答案 0 :(得分:2)
另一种方式:
A(sub2ind(size(A), coord(:, 1), coord(:, 2)))
答案 1 :(得分:1)
另一种方式:
A(coord(:, 1) + (coord(:, 2)-1)*size(A,1))
答案 2 :(得分:0)
我认为data = A(coord)
应该这样做。如果没有,data = A(coord(:,1),cord(:,2))
肯定会。我现在无法测试,所以可能会让我漏心。
答案 3 :(得分:0)
您可以尝试以下方法吗?
diag(A(coord(:,1),coord(:,2)))