Если вы хотите определить две функции одного и того же имени с различным числом входных аргументов, вы должны определить их в одной и той же функции файла и использовать 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).
Да, вызовите функцию с тем же именем и поместите ее в более высокое положение на вашем пути. – IKavanagh