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

时间:2018-07-20 19:35:46

标签: matlab matrix coordinate

我有一个大型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矩阵。我非常不确定它与“坐标”之间的关系。

4 个答案:

答案 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)))