在MATLAB中重载函数

时间:2015-10-18 09:18:23

标签: matlab overloading

我想在MATLAB中修改一个计算给定公式的代码,我想用与给定公式中相同的符号编写代码。在公式中,我有两个不同的函数,它们具有相同的名称,但只有参数的数量不同:Kn(a,b)Kn(a)

在MATLAB中有没有办法定义像c ++这样的重载函数?

1 个答案:

答案 0 :(得分:6)

如果要使用不同数量的输入参数定义两个具有相同名称的函数,则应在同一函数文件中定义它们,并使用varargin/nargin来处理这两种情况:

function out=Kn(varargin)

if nargin==1
  a=varargin{1};
  %
  %here do what Kn(a) does
  %
  %out=...
elseif nargin==2
  a=varargin{1};
  b=varargin{2};
  %
  %here do what Kn(a,b) does
  %
  %out=...
else
  error('Kn accepts up to 2 input arguments!')
end

%or maybe here do what both Kn(a) and Kn(a,b) do after some initial differences
%and return 'out' here

如果两个案例相似,那么这不会造成混淆,也不会很麻烦;如果这两个函数非常不同,您应该认真考虑使用具有不同名称的单独函数。在基于纸张的科学计算中,您可以根据索引的数量轻松区分数量,这可能会在编程中非常非常混乱(即使可以在matlab中进行操作,我也会建议它)。