坐标向量的二维逻辑矩阵(Basic matlab)

时间:2011-11-21 09:29:10

标签: matlab vector indexing matrix

我有一个2D矢量,其中包含我想要表示为True的坐标或一个尺寸为nxm的矩阵中的坐标。我可以在没有循环的情况下构建此矩阵吗

目前我这样做:

points = [(1,1), (30, 20), (8,7)]
grid = zeros(n,m);

for i = 1:length(points)
    grid(points(i,1),points(i,2))=1;
end

非常感谢我是matlab的新手,到目前为止我找不到答案。

2 个答案:

答案 0 :(得分:6)

如果坐标数(length(points))比n*m小得多(<10%),我建议使用稀疏矩阵。这样可以更好地利用内存并节省时间。

points=[1,30,8;1,20,7];
grid = sparse(points(1,:), points(2,:), 1, n ,m);

答案 1 :(得分:3)

你对点的赋值在语法上是不正确的,它应该是:

points=[1,30,8;1,20,7];

解决问题的方法在于使用sub2ind将下标转换为线性索引:

grid(sub2ind(size(grid),points(1,:),points(2,:)))=1