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

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值