Matlab如何設置函數默認參數值


需求

設計一個 y = kx + b 的函數,輸入 k, x, b,返回 y ; 其中,k 默認取 1 (未被賦值時),x 和 b 取任意值。

實現

function out = my_test(x,b,varargin)
    p = inputParser;            % 函數的輸入解析器
    addParameter(p,'k',1);      % 設置變量名和默認參數
    parse(p,varargin{:});       % 對輸入變量進行解析,如果檢測到前面的變量被賦值,則更新變量取值
    out = p.Results.k*x + b;    % 在這里定義你自己的函數計算公式
end

測試:

>> my_test(3,5)

ans =

     8

>> my_test(3,5,'k',2)

ans =

    11

總結

  • 首先,使用 varargin (var-arg-in,輸入變量列表)用來接收任意個數的輸入變量。
  • 然后,構造 inputParser 輸入解析器,通過 addParameter 向其中定義變量和默認取值。
  • 再通過 parse 對輸入變量列表 varargin 進行解析,當檢測到前面定義的變量在 varargin 中被重新賦值時,則更新該變量。
  • 最后,按照 p.Results.k 這樣的形式,對變量進行引用,參與到自己定義的計算中,剩下的就跟普通函數的做法無異了。
  • 調用函數時,若想重新為默認變量賦值,則按照 'k',2 (即Name1,Value1,...,NameN,ValueN這種字符串和數值組合形式)賦值即可。其實 Matlab 里的很多函數都采用到了這種形式,回憶下是不是這樣?比如 plot 的曲線顏色、粗細等參數的設置。
  • 值得一提的是,這種字符串和數值的輸入變量賦值方式,可以不講究順序,所以非常方便!

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM