【问题标题】:Matlab: Plotting on same figure using 2 different functionsMatlab:使用 2 个不同的函数在同一图形上绘图
【发布时间】:2017-04-04 11:45:21
【问题描述】:

我已经写了表单的函数

function myplot(x,y)
plot(x,y)
end

此函数为xy 的给定值创建一个图。实际功能更复杂,但在此处包含其内容并不符合问题的目的。重点如下。

我已尝试运行以下脚本:

x = [1:0.01:10]
y = [1:0.01:10]
figure
plot(sin([1:0.01:10]))
hold on
myplot(x,y)

这里的目的是在同一张图上绘制 2 组数据。第一组数据由 Matlab 原生的plot 命令生成,而第二组数据由用户自定义的myplot 函数生成(在这种情况下应该是一条直线)。上面的脚本不会这样做....

如何让 Matlab 在同一个图上包含两组数据?

【问题讨论】:

  • 确保你的情节限制。您可能正在从一个绘图到下一个绘图超出查看范围。否则,该基本示例对我有用。

标签: matlab plot matlab-figure


【解决方案1】:

您的脚本同时绘制了它们,但 x 值不同。如果您没有在plot 中指定x 输入,则它使用1:length(y),而您的myplot 函数确实 指定x 值(在您的情况下小10 倍) .

只需:plot(x,sin([1:0.01:10])) 而不是 plot(sin([1:0.01:10]))

【讨论】:

    【解决方案2】:

    您可以将当前轴(在其上创建第一个绘图)保存在一个变量中,并将其作为参数传递给您的函数,以确保无论您的代码中其他地方发生什么情况,它都会在相同的轴上绘图。

    所以你的主要代码可能如下所示:

    x = [1:0.01:10];
    y = [1:0.01:10];
    figure
    plot(sin([1:0.01:10]))
    hold on
    %// Save axes in variable
    CurrentAxes = gca;
    %// Pass it as argument to function
    myplot(x,y,CurrentAxes)
    

    和功能:

    function myplot(x,y,hAxes)
    
    plot(hAxes,x,y);
    
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      相关资源
      最近更新 更多