Matlab の 3 つの個別の m ファイル内に記述した 3 つの短い関数があります。
メイン関数は F_ と呼ばれ、1 つの入力引数を受け入れ、3 つの要素を持つベクトルを返します。
F_ からの出力の要素 1 と 2 は、他の 2 m ファイルの関数を使用して計算されます (想定されます)。
コードは次のとおりです。
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);
手伝ってください。ここで何が間違っていますか?
ある関数を別の関数から呼び出せるようにしたいだけです。