我在 Matlab 的 3 个单独的 m 文件中编写了 3 个简短的函数。
主函数称为 F_ 并接受一个输入参数并返回一个包含 3 个元素的向量。
F_ 输出的元素 1 和 2 是(应该是)使用其他 2 m 文件中的函数计算的,我们暂时称它们为 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);
请协助。我在这里做错了什么?
我只想能够从另一个函数中调用一个函数。