2011-11-21 71 views
2

我有一个二维矢量,其中包含我想表示为True或坐标为nxm的矩阵中的一个坐标。我可以建立这个矩阵没有循环?坐标矢量的2D逻辑矩阵(基本matlab)

目前,我这样做:

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新手,我无法找到答案为止。

回答

3

你的任务来分语法不正确,应该是:

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

到您问题的解决之道在于标转换为线性指数与sub2ind

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

我建议使用稀疏如果坐标的数量(length(points))比n*m小得多(< 10%)。这将更好地利用记忆并节省您的时间。

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