优化大矩阵的绘图过程

时间:2015-11-21 21:35:29

标签: matlab

我有两个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

现在我的问题是,有没有办法更有效地做到这一点?由于这些矩阵相当大,因此需要一段时间才能运行。

1 个答案:

答案 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.');