質問: 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_me_n1関数を単独で機能させたいので、plot()を関数の外部に移動することはできません。では、すべてのプロットを1つの図に同時に表示できるようにするにはどうすればよいでしょうか。これらのコードを改善する方法についてのリファクタリングコメントは大歓迎です。ありがとう。実際、スクリプトは正常に機能しており、プロットが互いに重なり合っているだけです。
回答: holdコマンドは、図形の軸を操作します。コードは図を生成しますが、holdを呼び出すと軸が含まれていません。これを修正するには、plotコマンドの直後にholdを配置して、前のプロットを同じ図に保持します。... plot(t,y,'color',rand(1,4)); hold on ... また、hold allはmatlabの将来のリリースで削除される予定です。代わりに、hold onを使用してください。