Matlab通过函数在一个图中绘图

Matlab通过函数在一个图中绘图

我编写了一个函数,使用 4 个输入参数绘制函数 y(t)。

function plot_me_n1(A,B,m1,m2) 
t = linspace(0,10,10/0.01);
y=A*exp(-m1*t) - B*exp(-m2*t);
plot(t,y,'color',rand(1,4));
title('equation', 'fontsize', 10);
ylabel('y(t)');
xlabel('t');
end

现在我正在创建另一个函数,该函数将多个变量传递给 plot_me_n1 函数以创建多个图。

figure                 
hold all
A=[-8,8,-8];
B=[9,-9,-9];
m1=-3;
m2=-4;
arrayfun(@(a,b) plot_me_n1(a,b,m1,m2),A, B);
hold off

问题是它只显示最后一个图,而我试图同时显示多个图。值得一提的是,我无法将 plot() 移到函数外部,因为我想让 plot_me_n1 函数能够独立工作,而不依赖于其他脚本。那么如何才能在一个图中同时显示所有图呢?欢迎任何关于如何改进这些代码的重构评论。谢谢。

其实剧本运行良好,只是情节相互重叠。

答案1

hold命令对图形的轴进行操作。您的代码生成了一个图形,但是当您调用时它不包含轴hold

解决这个问题的方法是将其放在hold绘图命令之后,以使之前的绘图保持在同一个图中。

...
plot(t,y,'color',rand(1,4));
hold on
...

此外,hold all在 Matlab 的未来版本中将被删除,请改用hold on

相关内容