2015-10-18 4 views
0

Я хочу указать код в MATLAB, который вычисляет данную формулу, и я хочу написать код с теми же обозначениями, что и в данной формуле. В формуле у меня есть две разные функции с тем же именем, но они отличаются только количеством аргументов: Kn(a,b) и Kn(a).Функции перегрузки в MATLAB

Есть ли способ в MATLAB для определения функций перегрузки, например, в C++?

+0

Да, вызовите функцию с тем же именем и поместите ее в более высокое положение на вашем пути. – IKavanagh

ответ

4

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

Смежные вопросы