说明
matlab不支持重载功能,但是我们可以通过某些方法去实现类似重载的功能。
笔记
- 以下述代码为例,函数当中的
varargin
变量是元胞数组类型,调用函数testFun
时,输入的函数参数将自动转成元胞数组。
此处注意,要想实现重载功能,函数的输入参数必须是
varargin
,而调用函数时输入的参数,必须使用[]
括起来.
narginchk(m,n)
用来限制输入参数的数量范围,即至少输入m
个参数,最多输入n
个参数,不符合条件则会自动报错.
如果不用
narginchk(m,n)
,程序会自动执行完,出现其他谜一样的未知错误,建议还是使用比较好
- 对于输入变量数量的判断,matlab内部有一个自动存储函数中输入个数的
nargin
变量,使用它即可。
function [y] = testFun(varargin)
narginchk(2,3)
if nargin==2
a = varargin{1,1};
b = varargin{1,2};
c = zeros(1,5);
elseif nargin==3
a = varargin{1,1};
b = varargin{1,2};
c = varargin{1,3};
end
y = a + b + c;
end
实例
测试函数:
function y = testFun(varargin)
if nargin==2
y=2;
elseif nargin==3
y=3;
end
end
调用:
由于[1 1 1]
算一个参数,因此程序正常执行完,没有返回值
注意变量之间必须要用
,
隔开
要点
- 函数参数
varargin
- 输入变量数量
nargin
- 调用时要用
[]
- 限制输入变量的数量
narginchk(m,n)