我编写了一个函数,使用 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
。