繁体   English   中英

在Matlab GUI轴手柄中绘制3个向量

[英]Plotting 3 vectors in Matlab GUI axes handle

我正在尝试在串行对象的回调中将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;

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

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

我不确定为什么您第一次尝试使用“ hold”不起作用。 似乎应该有。

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

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

这将为绘图命令指定X = length(sensor_)和Y = sensor_。 当您只给图提供Y输入时,它假定X为length(Y)。 但是您不能通过仅给出每个Y的输入来在单个plot命令中组合多条迹线,因为它将尝试将输入视为X,Y对。

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

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

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

蓝色,绿色,红色...

因此交换列顺序将以要求的颜色绘制线条

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM