我正在尝试对以下嵌套循环进行矢量化,因此我不必在循环中绘制值:
for i=1:size(validMaskX,1)
for j=1:size(validMaskX,2)
if( validMaskX(i,j) )
plot(ah, [dataX(i,j) dataX(i,j+1)], [dataY(i,j) dataY(i,j+1)], 'g-')
end
end
end
有关如何执行此操作的任何建议?
答案 0 :(得分:2)
使用
vind=find(validMaskX);
vindn = vind + size(validMaskX, 1);
你可以找到有效点和第二个指数。然后,您可以使用
进行绘图plot(ah, [dataX(vind), dataX(vindn)], [dataY(vind), dataY(vindn)], 'g-');
如果您只想要一个绘图对象(这会使渲染速度更快),请考虑
dx = [dataX(vind), dataX(vindn), nan(numel(vind), 1)]';
dy = [dataY(vind), dataY(vindn), nan(numel(vind), 1)]';
plot(ah, dx(:), dy(:), 'g-');
答案 1 :(得分:1)
如果你想在图上一起显示所有的线条,你可以这样做:
ind=find(validMask);
X=[dataX(ind) dataX(ind+45) nan(length(ind),1)];
Y=[dataY(ind) dataY(ind+45) nan(length(ind),1)];
plot(ah,X',Y','g-')
答案 2 :(得分:0)
我认为我昨天理解你的解决方案,但显然我不知道,因为当我尝试根据你的回答修改下面的代码时,它会起作用:你如何根据你的修改以前的回答?
for i=1:size(validMaskY,1)
for j=1:size(validMaskY,2)
if( validMaskY(i,j) )
plot(ah, [dataX(i,j) dataX(i+1,j)], [dataY(i,j) dataY(i+1,j)], 'r-')
end
end
end
大小(DATAX)=尺寸(DATAY)