我有两个2x40401矩阵x1和x2。
算法:
读取x1,x1(1,k)的第k列的第一个分量。
如果x1(1,k)> 0将x2,x2(:,k)的第k列绘制为红点。
如果x1(1,k)< 0将x2的第k列,x2(:,k)绘制为蓝点。
我现在使用的流程是
for k = 1:40401
if x1(1, k) < 0
plot(x2(1, k), x2(2, k), 'r.')
elseif x1(1, k) > 0
plot(x2(1, k), x2(2, k), 'b.')
end
end
现在我的问题是,有没有办法更有效地做到这一点?由于这些矩阵相当大,因此需要一段时间才能运行。
答案 0 :(得分:1)
您可以按如下方式对图进行矢量化:
% Find all indices where x1 row 1 is less than 0.
% a new variable y is not necessary but it makes code more readable.
y = x1(1,:) < 0;
% Plot all x2 points where x1(1,:) < 0
plot(x2(1,(y==1)),x2(2,(y==1)),'r.');
% Plot all x2 points where x1(1,:) > 0
plot(x2(1,(y==0)),x2(2,(y==0)),'b.');