在MATLAB中重载函数

O.T*_*.T. 3 matlab overloading

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

MATLAB中有没有一种方法可以像c ++一样定义重载函数?

And*_*eak 8

如果要使用不同数量的输入参数定义两个具有相同名称的函数,则应在同一函数文件中定义它们并用于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
Run Code Online (Sandbox Code Playgroud)

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