在 MATLAB 中重载函数

Overloading functions in MATLAB

我想在 MATLAB 中正确计算给定公式的代码,并且我想使用与给定公式中相同的符号来编写代码。在公式中,我有两个具有相同名称但仅参数数量不同的不同函数:Kn(a,b)Kn(a).

在 MATLAB 中有没有像在 C++ 中那样定义重载函数的方法?

如果你想定义两个输入参数数量不同的同名函数,你应该在同一个函数文件中定义它们并使用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 中做)。