如何对此循环进行矢量化

时间:2017-06-01 21:18:55

标签: matlab for-loop matrix

如何对以下代码进行矢量化?

此处x_cordsy_cords都是7894 * 1向量,而buffImg是虚拟零图像,我正在尝试绘制线并获取线段图像。

for i = 1:length(x_cords)
   buffImg(y_cords(i),x_cords(i)) = 1;
end

1 个答案:

答案 0 :(得分:2)

在这种情况下,您需要使用x_cords - 函数将存储在y_cordssub2ind中的下标索引转换为线性索引,然后您可以直接分配这样的索引:< / p>

buffImg=zeros(100,100);
x=randperm(100);
y=randperm(100);
buffImg(sub2ind(size(buffImg),x,y))=1;

只是为了告诉你,输出是一样的,以下是测试方法:

x=randperm(100);
y=randperm(100);
buffImg=zeros(100,100);
buffImg2=zeros(100,100);
for i = 1:length(x)
   buffImg(x(i),y(i)) = 1;
end
buffImg2(sub2ind(size(buffImg),x,y))=1;
all(all(buffImg==buffImg2))