Yek*_*ver 59 math parameters matlab arguments function
如何在MATLAB中用可选参数声明函数?
例如:function [a] = train(x, y, opt),opt必须是可选参数.
Mor*_*gan 47
一个简单的方法是通过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
Run Code Online (Sandbox Code Playgroud)
Pra*_*ian 45
有关如何执行此操作的一些不同选项.最基本的是使用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
Run Code Online (Sandbox Code Playgroud)
一个更优雅的解决方案是使用inputParser该类来定义您的函数所需的所有参数,包括必需和可选.inputParser还允许您对所有参数执行类型检查.
Evg*_*eev 40
解决这个问题的一个好方法是不使用nargin,而是检查是否已使用设置变量exist('opt', 'var').
例:
function [a] = train(x, y, opt)
if (~exist('opt', 'var'))
opt = true;
end
end
Run Code Online (Sandbox Code Playgroud)
请参阅此答案,了解如何通过这种方式执行此操作:如何检查函数调用中是否提供了参数?
小智 7
对于如何在函数中使用可选参数有详细的描述。此外,您还可以学习如何使用内置 matlab fun 等函数
乐趣(arg1,'键1',值1)
有一些使用上面技巧的例子:
function [a] = train(x,y,opt)
arguments
x double
y double
opt {mustBeNonempty} = true
% this set the default value for opt is true
end
if opt
a = 1;
else
a = x+y;
end
end
Run Code Online (Sandbox Code Playgroud)