K. *_*eff 5 matlab for-loop if-statement vectorization
我正在尝试对以下嵌套循环进行矢量化,因此我不必在循环中绘制值:
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
Run Code Online (Sandbox Code Playgroud)
有关如何做到这一点的任何建议?
和
vind=find(validMaskX);
vindn = vind + size(validMaskX, 1);
Run Code Online (Sandbox Code Playgroud)
您可以找到有效点和第二个索引。然后,你可以用
plot(ah, [dataX(vind), dataX(vindn)], [dataY(vind), dataY(vindn)], 'g-');
Run Code Online (Sandbox Code Playgroud)
如果您只想要一个绘图对象(这将使渲染速度更快),请考虑
dx = [dataX(vind), dataX(vindn), nan(numel(vind), 1)]';
dy = [dataY(vind), dataY(vindn), nan(numel(vind), 1)]';
plot(ah, dx(:), dy(:), 'g-');
Run Code Online (Sandbox Code Playgroud)