Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中矢量化绘制不同颜色的多条直线?_Matlab - Fatal编程技术网

在MATLAB中矢量化绘制不同颜色的多条直线?

在MATLAB中矢量化绘制不同颜色的多条直线?,matlab,Matlab,有没有一种方法可以矢量化/加速使用不同颜色绘制多条直线的任务 有效但缓慢的方法是 X = [1 2; 3 4]; Y = [2 -4; 5 2]; figure; hold on; colors = [1 0 0; 0 1 0]; for idx = 1:size(X, 2) l = plot(X(:, idx), Y(:, idx), 'Color', colors(idx, :)); end hold off; 我试过了 X = [1 2; 3 4]; Y = [2 -4; 5 2

有没有一种方法可以矢量化/加速使用不同颜色绘制多条直线的任务

有效但缓慢的方法是

X = [1 2; 3 4];
Y = [2 -4; 5 2];
figure;
hold on;
colors = [1 0 0; 0 1 0];
for idx = 1:size(X, 2)
    l = plot(X(:, idx), Y(:, idx), 'Color', colors(idx, :));
end
hold off;
我试过了

X = [1 2; 3 4];
Y = [2 -4; 5 2];
figure;
plot(X, Y, 'Color', [1 0 0; 0 1 0]);

但是运气不好。

这可能太粗糙了,不能作为循环的有用替代品,但它是这样的:

set(gca, 'ColorOrder', [1 0 0; 0 1 0], 'NextPlot', 'add')
plot(X, Y);
'ColorOrder'
属性包含默认情况下用于新绘图的颜色。将
'NextPlot'
设置为
'add'
似乎是必要的,这样对
绘图的调用就不会将
'ColorOrder'
重置为其默认值


在R2015b上测试。

现在无法测试,但可能您可以在绘图前尝试手动设置轴限制一次,这样,如果需要重新计算轴限制,Matlab不需要每次都进行计算;查看Yahir Altman的文章和文本下方评论中的一些提示。希望这能有所帮助!看看这里:一个已知的改进:使用低级函数
line
over
plot
。嘿@chappjc,你应该经常来这里:-P+1;谢谢想知道这是否真的能让事情变得更快?我的最终目标是加速工作(不仅仅是矢量化):-D@SibbsGambling不确定速度,最好在您的Matlab版本和具体情况下尝试。但是循环更具可读性;我可能会这么说哦,但是如果我的颜色是RGBA而不是RGB呢?刚刚试过--
set(gca,'ColorOrder',colors)实际上不包含四列。@据我所知,Matlab不支持将alpha作为颜色指定的一部分。可以单独指定图形对象的alpha。但这不适用于
绘图
;仅适用于
曲面
等。因此,您可能需要手动执行alpha计算以转换为RGB颜色