matlab函数重载功能的实现笔记

说明
matlab不支持重载功能,但是我们可以通过某些方法去实现类似重载的功能。

笔记

  1. 以下述代码为例,函数当中的varargin变量是元胞数组类型,调用函数testFun时,输入的函数参数将自动转成元胞数组。

此处注意,要想实现重载功能,函数的输入参数必须是varargin,而调用函数时输入的参数,必须使用[]括起来.

  1. narginchk(m,n)用来限制输入参数的数量范围,即至少输入m个参数,最多输入n个参数,不符合条件则会自动报错.

如果不用narginchk(m,n),程序会自动执行完,出现其他谜一样的未知错误,建议还是使用比较好

  1. 对于输入变量数量的判断,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)
发布了97 篇原创文章 · 获赞 83 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43455581/article/details/104823357
今日推荐