Matlab包含許多繪圖函數,它們將可選參數作爲要繪製的軸的句柄。在線向用戶定義的函數(varargin,inputParser)添加可選參數的方法很多,但通常要求可選參數僅在強制參數之後出現,而matlab中的繪圖函數通常採用以下形式:Matlab - 可選句柄第一個用於繪圖函數的參數
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