在Matlab GUI轴上绘制3个矢量图

时间:2014-03-27 14:37:11

标签: matlab plot

我试图在串行对象的回调中将3个向量绘制到matlab GUI上。 我想在轴手柄上绘制这个,但问题是它只绘制最后一个向量;

    plot(handles.axes1,sensor1,'r');
    plot(handles.axes1,sensor2,'b');
    plot(handles.axes1,sensor3,'g');

我在互联网上搜索并发现这个问题可以通过保持和保持功能来解决,所以我尝试了这个

    plot(handles.axes1,sensor1,'r');
    hold on ;
    plot(handles.axes1,sensor2,'b');
    plot(handles.axes1,sensor3,'g');
    hold off;

但是在这种情况下会打开一个新的数字(不知道为什么),并且只会绘制最后一个绘图。

我被困了。如果有人知道会出现什么问题? 感谢

2 个答案:

答案 0 :(得分:1)

我不确定为什么你第一次尝试使用" hold"没有工作。看起来应该有。

但无论如何,您可以在一个命令中获得所需的行为:

plot(handles.axes1,length(sensor1),sensor1,'r',...
                   length(sensor2),sensor2,'b',...
                   length(sensor3),sensor3,'g');

这指定了绘图命令的X =长度(sensor_)和Y = sensor_。当您仅为Y输入绘图时,它假定X为长度(Y)。但是你不能在一个绘图命令中组合多个轨迹,只为每个轨迹提供Y输入,因为它会尝试将输入视为X,Y对。

答案 1 :(得分:0)

由于矢量长度相同,我们可以简单地将它们组合为矩阵的列,然后绘制矩阵

plot(handles.axes1,[sensor1',sensor2',sensor3'])

但是这些将具有默认颜色顺序。如果不指定x值,则在plot命令中设置颜色很棘手。但是(幸运的是)默认订单开始:

蓝色,绿色,红色......

因此,交换列顺序将使用所请求的颜色绘制线条

plot(handles.axes1,[sensor2',sensor3',sensor1'])

(这假设向量是行,如果它们是列,则不转置它们)