从给定坐标列表的数组中提取值列表

Extract list of values from array given coordinate list

我有一个大的二维矩阵,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 矩阵。我非常不确定它与 'coord'.

的关系

我认为 data = A(coord) 应该这样做。如果没有,data = A(coord(:,1),cord(:,2)) 肯定会。我现在无法测试,所以我可能会忘记一些事情。

你可以尝试以下方法吗:

diag(A(coord(:,1),coord(:,2)))

另一种方式:

A(sub2ind(size(A), coord(:, 1), coord(:, 2)))

另一种方式:

A(coord(:, 1) + (coord(:, 2)-1)*size(A,1))