MATLAB函数中的可选参数

我怎样才能在MATLAB中声明函数的可选参数?

例如: function [a] = train(x, y, opt) ,其中opt必须是可选参数。

如何做到这一点有几个不同的select。 最基本的是使用varargin ,然后使用narginsize等来确定可选参数是否已经传递给函数。

 % 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 

看到这个答案这样做的优点: 如何检查函数调用是否提供了一个参数?