我有一个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的新手,到目前为止我找不到答案。
答案 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