回覆列表
-
1 # ispru4585
-
2 # 使用者5189701024573
nargin,nargout,判斷輸入、輸出引數的個數是否滿足要求。
以輸入為例,matlab自帶數字轉字串函式
function s = num2str(x, f)
一開始會判斷輸入引數的個數
if nargin
error(message("MATLAB:num2str:NumericArrayUnspecified"))
end
如果沒有輸入引數,就會給出錯誤資訊提示;
這就是說該函式形式上有兩個輸入引數,實際上只要輸入第一個就可以了。
後面還有隻有一個引數時,對輸入引數的判斷和處理
if nargin
總體就是這個意思。
nargin為“number of input arguments”的縮寫。 在matlab中定義一個函式時, 在函式體內部, nargin是用來判斷輸入變數個數的函式。在matlab命令視窗中輸入help nargin或者doc nargin即可獲得該函式的幫助資訊。nargin透過呼叫當前正在執行的函式返回輸入引數的數量,只在函式體內使用nargin語法功能。nargin(fx)在函式fx的定義宣告中返回輸入引數的個數。如果函式包括varargin其定義,那麼nargin返回的輸入個數為負。例如函式foo輸入有 a,b,和varargin三個引數,那麼nargin("foo”)返回值為-3。nargout的作用是在matlab中定義一個函式時, 在函式體內部, nargout指出了輸出引數的個數(nargin指出了輸入引數的個數)。 特別是在利用了可變引數列表的函式中, 用nargout獲取輸出引數個數很方便。語法nargoutnargout(fun)相關:varargout、nargin、varargin應用舉例function varargout = foo(varargin)fprintf("How many output arguments? %d\n", nargout);for k=1:nargoutvarargout(k) = {varargin{k}};endend輸出結果>> ret = foo(1, 2, 3)How many output arguments? 1ret = 1>> [retA, retB] = foo(1, 2, 3)How many output arguments? 2retA = 1retB = 2>> [retA, retB, retC] = foo(1, 2, 3)How many output arguments? 3retA = 1retB = 2retC = 3