Я смущен вашим вопросом? Вы говорите, что у вас есть основная функция function1
, которая содержит подфункцию function2
, и что вы хотели бы иметь возможность вызывать эту подфункцию напрямую?
Если это так, то обратитесь к этой статье поддержки Mathworks
Первый метод для вызова подфункции вне главной функции
создать дескриптор функции для подфункции внутри основного
функция (где подфункция находится в области видимости) и вернуть его в качестве дополнительного
выходной аргумент. Затем вы можете использовать FEVAL для оценки функции
обрабатывать, передавая любые аргументы, которые принимает подфункция. Причина
это работает, что дескриптор функции записывает область действия функции
или подфункция, в которой он был создан. Простой пример того, как это сделать
это:
function y=myfun(varargin)
if nargin==0 % There are no input arguments, I assume you are asking for the function handle
y=@mysubfun; % This only works in MATLAB 6.0 (R12) and above else % There is an input argument, I assume you want to evaluate the main function
y=2*varargin{1}
end
function t=mysubfun(z)
t=3*z;
Теперь, если вы введете:
H=myfun;
y1=myfun(1);
y2=feval(H,1);
[y1 y2]
Вы получите результат:
ans =
2 3