У меня есть 3 коротких функции, которые я написал в 3 отдельных файлах m в Matlab.Вызов функции из другой функции?
Основная функция называется F_ и принимает один входной аргумент и возвращает вектор с 3 элементами.
Элементы 1 и 2 выходного сигнала из F_ (предположительно), рассчитанные с использованием функций в других 2-м файлах, позволяют называть их theta0_ и theta1_ на данный момент.
Вот код:
function Output = F_(t)
global RhoRF SigmaRF
Output = zeros(3,1);
Output(1) = theta0(t);
Output(2) = theta1(t) - RhoRF(2,3)*sqrt(SigmaRF(2,2))*sqrt(SigmaRF(3,3));
Output(3) = -0.5*SigmaRF(3,3);
end
и
function Output = theta0_(t)
global df0dt a0 f0 SigmaRF
Output = df0dt(t) + a0 + f0(t) + SigmaRF(1,1)/(2*a0)*(1-exp(-2*a0*t));
end
и
function Output = theta1_(t)
global df1dt a1 f1 SigmaRF
Output = df1dt(t) + a1 + f1(t) + SigmaRF(2,2)/(2*a1)*(1-exp(-2*a1*t));
end
я создал дескрипторы этих функций следующим образом:
F = @F_;
theta0 = @theta0_;
theta1 = @theta1_;
Когда я бегу F_ через его ручка с любым значением t
я получаю следующее сообщение об ошибке:
F_(1)
Undefined function 'theta0' for input arguments of type 'double'.
Error in F_ (line 9)
Output(1) = theta0(t);
Пожалуйста помогите. Что я здесь делаю неправильно?
Я только хочу, чтобы иметь возможность вызвать одну функцию изнутри другой.
Вы определили его как 'theta0_' и назовем его' theta0'. Кроме того, вам не нужно вызывать его через дескриптор. – Oleg