Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function MATLAB函数中的可选参数_Function_Math_Matlab_Parameters_Arguments - Fatal编程技术网

Function MATLAB函数中的可选参数

Function MATLAB函数中的可选参数,function,math,matlab,parameters,arguments,Function,Math,Matlab,Parameters,Arguments,如何使用可选参数在MATLAB中声明函数 例如:函数[a]=train(x,y,opt),其中opt必须是可选参数。关于如何执行此操作,有几个不同的选项。最基本的方法是使用,然后使用nargin、size等来确定可选参数是否已传递给函数 % Function that takes two arguments, X & Y, followed by a variable % number of additional arguments function varlist(X,Y,varar

如何使用可选参数在MATLAB中声明函数


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

关于如何执行此操作,有几个不同的选项。最基本的方法是使用,然后使用
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

一个更优雅的解决方案是使用该类定义函数所需的所有参数,包括必需参数和可选参数
inputParser
还允许您对所有参数执行类型检查。

一种简单的方法是通过
nargin
(中的N个参数)。缺点是您必须确保您的参数列表和nargin检查匹配

值得记住的是,所有输入都是可选的,但是如果调用未设置的变量,函数将带着错误退出。以下示例为
b
c
设置默认值。如果
a
不存在,将退出

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
函数[output_args]=输入_示例(a、b、c)
如果nargin<1
错误('输入\示例:a是必需的输入')
结束
如果nargin<2
b=20
结束
如果nargin<3
c=30
结束
结束

一个很好的方法不是使用
nargin
,而是检查变量是否已使用
存在('opt','var')
设置

例如:

function [a] = train(x, y, opt)
    if (~exist('opt', 'var'))
        opt = true;
    end
end

查看这个答案,了解这样做的好处:

可能重复,在这里和这里进行了很好的讨论