回覆列表
  • 1 # 使用者2035774605866

    你的程式是確定的,不可能“有時可以有時不可以”,現在的程式碼執行肯定會出錯。

    varargin一般用於函式的輸入引數“可能的最大數量”未知的場合,例如,用fprintf函式進行格式化輸出,作為這個函式的設計者,無法預知使用者會一次性輸出多少資料,這就是varargin最典型的應用場合(當然,引數數量未知,但規律必需已知,否則無法處理)。

    就你的程式而言,並沒有使用varargin的必要(當然,也可以用)。

    從函式ex0116的呼叫情況看,ex0117的輸入可能有1-3個,那麼,在輸入引數數量不足3個時,必須要有相應的處理。

    就函式ex0114而言,其呼叫可能有1個或2個,那麼,在輸入引數為1個時,必須對第二個引數D作適當處理,但一般不建議用全域性變數(而且,你的程式碼宣告D為全域性但沒有定義,也不可能起作用)。

    附修改後的程式碼,供參考(第一個函式ex0116無改動):

    function ex0117(ftn,bounds,varargin)

    if nargin

    varargin{1}=1;

    end

    if nargin

    bounds=[-1 1];

    end

    b1=bounds(1);b2=bounds(2);

    t=b1+ [0:100]/100*(b2-b1);

    x=feval(ftn,t,varargin{:});

    plot(t,x)

    end

    function x=ex0114(t,D)

    if nargin==1, D=1; end

    t(find(t==0)) =eps;

    x=sin(pi*t/D)./(pi*t/D);

    end

  • 中秋節和大豐收的關聯?
  • 翡翠場口哪些出高貨的機率大?