【问题标题】:Plotting 3 vectors in Matlab GUI axes handle在 Matlab GUI 轴句柄中绘制 3 个向量
【发布时间】:2014-03-27 14:37:11
【问题描述】:

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

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

我在网上搜索,发现这个问题可以通过hold on and hold of feature解决,所以我尝试了这个

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

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

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

【问题讨论】:

  • 目的是按照向量的顺序绘制向量吗?并且向量的长度是否相同?
  • 向量的长度相同。是的,目的是在同一张图上绘制所有 3 个。做比较

标签: matlab plot


【解决方案1】:

我不确定为什么您第一次尝试使用“hold”没有奏效。好像应该有。

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    蓝色、绿色、红色...

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      相关资源
      最近更新 更多