从给定坐标列表的数组中提取值列表
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))
我有一个大的二维矩阵,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))