2016-04-11 196 views
0

也許這對於你們來說是非常簡單的問題,但是我試圖在只有2個或更多輸入時使用MATLAB編寫函數。我一直在尋找解決方案,但找不到我想要的。正是這樣的matlab函數變量輸入

function myfunction(x1,y1,x2,y2) 

    plot(x1,y1) %// user just puts x1,y1 

    %// or 

    plot(x1,y1,x2,y2) %// user puts x1,y1,x2,y2 

end 

我希望函數工作,當用戶只需把x1,y1作爲輸入,但我也希望它當用戶將x1,y1,x2,y2工作,並繪製圖形。

回答

1

您可以使用varargin來接受多個輸入或使用exist來檢查其他輸入。我個人更喜歡exist,因爲那時輸入參數可以保留有用的名稱。

varargin

對於您的情況,使用的varargin確實簡化了您的功能。使用varargin{:}只需將全部輸入參數傳遞給plot

function myfunction(varargin) 
    plot(varargin{:}) 
end 

exist

這裏,exist將產生false如果x2y2或不提供給該函數。

function myfunction(x1, y1, x2, y2) 

    if exist('x2', 'var') && exist('y2', 'var') 
     plot(x1, y1, x2, y2) 
    else 
     plot(x1, y1) 
    end 
end 
+0

您還可以對簡單情況使用'nargin'。 – Dan