MATLAB函数中的可选参数
我怎样才能在MATLAB中声明函数的可选参数?
例如: function [a] = train(x, y, opt)
,其中opt必须是可选参数。
如何做到这一点有几个不同的select。 最基本的是使用varargin
,然后使用nargin
, size
等来确定可选参数是否已经传递给函数。
% Function that takes two arguments, X & Y, followed by a variable % number of additional arguments function varlist(X,Y,varargin) fprintf('Total number of inputs = %d\n',nargin); nVarargs = length(varargin); fprintf('Inputs in varargin(%d):\n',nVarargs) for k = 1:nVarargs fprintf(' %d\n', varargin{k}) end
稍微优雅的解决scheme是使用inputParser
类来定义函数期望的所有参数,包括必需的和可选的。 inputParser
还允许您对所有参数执行types检查。
一个简单的方法是通过nargin(N个参数)。 缺点是你必须确保你的参数列表和简单的匹配。
值得记住的是,所有的input都是可选的,但是如果函数调用一个没有设置的variables,那么这个函数将会退出。 以下示例为b和c设置默认值。 如果不存在,将退出。
function [ output_args ] = input_example( a, b, c ) if nargin < 1 error('input_example : a is a required input') end if nargin < 2 b = 20 end if nargin < 3 c = 30 end end
解决这个问题的好方法不是使用nargin
,而是使用nargin
exist('opt', 'var')
来检查variables是否已经被设置。
例:
function [a] = train(x, y, opt) if (~exist('opt', 'var')) opt = true; end end
看到这个答案这样做的优点: 如何检查函数调用是否提供了一个参数?