Matlabには、プロットする軸へのハンドルであるオプションの引数を取る多くのプロット関数が含まれています。ユーザ定義関数(varargin、inputParser)にオプションの引数を追加する方法は多くありますが、オプション引数は必須引数の後に来る必要がありますが、通常はmatlabのプロット関数はMatlab - plotのような関数のためのオプションのハンドル引数
plot(optional, mandatory, optional)
つまり、オプションの引数は、必須の引数の前後に指定できます。
カスタムプロットタイプのこの動作を複製して、組み込みプロット関数と同じスタイルに従いたいとします。以下のユースケースは、単独の引数の数をチェックすることが望ましい行動を達成するには不十分であることを実証するために提示されています
x = [1:10];
y = x.^2;
ax(1) = subplot(1, 2, 1);
ax(2) = subplot(1, 2, 2);
myplot(x, y); %Mandatory
myplot(x, y, 'r+'); %Mandatory, optional
myplot(ax(1), x, y); %Optional, mandatory
myplot(ax(2), x, y, 'r+'); %Optional, mandatory, optional
私の質問は、技術は、我々はこの動作をエミュレートするために使用することができるもの、ありますか?
これはこれが行われた方法だと感じましたが、よりエレガントなものが可能であることを望んでいました。 – bhillam
@bhillam私はこれでうまくいかないとは思わない? MATLABは関数のオーバーロードを許可しません。とにかく2つの関数を書く必要がありました。 – patrik
多数の引数の組み合わせが可能な場合、非常に迅速に厄介になるコードの重複があります。残念ながら、これは使用される手法に関係なく問題になると思われます。 私はこの答えを受け入れました。なぜなら、Sam Robertsの答えのいくつかの要素が有用であるにもかかわらず、組み込みプロット関数と同じ虚偽の必須引数の前にオプションの引数を含める方法を扱っているからです。 – bhillam