我想在MATLAB中修改一个计算给定公式的代码,我想用与给定公式中相同的符号编写代码。在公式中,我有两个不同的函数,它们具有相同的名称,但只有参数的数量不同:Kn(a,b)
和Kn(a)
。
在MATLAB中有没有办法定义像c ++这样的重载函数?
答案 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中进行操作,我也会建议它)。