matlab函数设置默认值以及输入检查
·
方案1
function func(idx)
if ~isscalar(idx)
error('idx must be a scalar')
end
if ~(idx > 0)
error('idx must be positive');
end
if ~(idx == floor(idx))
error('idx must be integer');
end
% ....正文
end
方案2
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
方案3
function out = my_test(x,b,k)
if(~exist('k','var'))
k = 1; % 如果未出现该变量,则对其进行赋值
end
out = k*x + b;
end
测试
>> my_test(3,5)
ans = 8
>> my_test(3,5,2)
ans = 11
方案4
function myFunction(x, y, maxval, minval)
arguments
x (1, 1) double
y (1, 1) double
maxval (1, 1) double = max(max(x), max(y))
minval (1, 1) double = min(min(x), min(y))
% maxval(1, 1) double = 2
% minval(1, 1) double = 2
end
% Function code
sum = x + y + maxval + minval;
disp(sum)
end
测试
>> myFunction(1, 2)
6
>> myFunction(1, 2, 3, 1)
7
输入参数顺序可以变化的解决方案
function y = foo(x, op)
arguments
x
op.a = 2;
op.b = 1;
end
s = struct2cell(op);
[a, b] = s{:};
y = a * x + b;
测试
>> foo(1)
ans =
3
>> foo(1, a=2, b=2)
ans =
4
>> foo(1, b=3, a=2)
ans =
5
推荐使用方案4,arguments…end 语句来设置默认值和进行输入检查更加简明方便。
参考资料
1、Matlab中函数设置默认参数值的两种方法
2、arguments: MATLAB输入检查的新语法
3、arguments
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)