zoukankan      html  css  js  c++  java
  • 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 的曲线颜色、粗细等参数的设置。
    • 值得一提的是,这种字符串和数值的输入变量赋值方式,可以不讲究顺序,所以非常方便!

    参考资料

    © 版权声明
    文章版权归作者所有,未经允许请勿转载。
  • 相关阅读:
    读spring Micro-Service tats收获
    读spring Micro-Service tats收获
    读spring Micro-Service tats收获
    读Software Entity Architektur收获
    读Software Entity Architektur收获
    读Software Entity Architektur收获
    mvc案例
    11.16
    11.15
    11.13
  • 原文地址:https://www.cnblogs.com/gshang/p/14532104.html
Copyright © 2011-2022 走看看