Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在MATLAB中求解ODE系统时会产生以下错误:“;未定义函数';存在';对于类型为';单元格'&引用;_Matlab_Simulink_Ode_Function Handle_Undefined Function - Fatal编程技术网

尝试在MATLAB中求解ODE系统时会产生以下错误:“;未定义函数';存在';对于类型为';单元格'&引用;

尝试在MATLAB中求解ODE系统时会产生以下错误:“;未定义函数';存在';对于类型为';单元格'&引用;,matlab,simulink,ode,function-handle,undefined-function,Matlab,Simulink,Ode,Function Handle,Undefined Function,当我试图在MATLAB中解两个方程的常微分方程组时,我遇到了一些困难 我使用的代码如下所示: x0=-1; %Initial condition for variable x y0=-10; %Initial condition for variable y dx=@(t,x,y) y+2.*t; %First ODE dy=@(t,y) y; %Second ODE f={dx;dy}; %Array that

当我试图在MATLAB中解两个方程的常微分方程组时,我遇到了一些困难

我使用的代码如下所示:

x0=-1;              %Initial condition for variable x
y0=-10;             %Initial condition for variable y
dx=@(t,x,y) y+2.*t; %First ODE
dy=@(t,y) y;        %Second ODE
f={dx;dy};          %Array that contains the first and second ODE's

[t,g]=ode15s(f,[0 1],[x0 y0]);  %Call for ode15s solver
当我执行此代码时,会出现以下错误:

类型为“cell”的输入参数的未定义函数“exist”

我不想创造一个功能的风格

function f=myodes(t,x,y)
etc etc
end
因为该代码旨在嵌套在函数代码中,然后将其插入Simulink中的MATLAB函数块中,该函数块需要使用Simulink文件中其他块的输出作为输入

我不能直接在Simulink上实现,因为该代码实际上是一个需要求解的更大方程组的实践,其中自变量不是时间而是距离

任何帮助都将不胜感激

谢谢

进行替换

z ≣ [x; y]
以致

dz ≣ [dx; dy]
您可以将此实现为

x0 = -1;    %// Initial condition for variable x
y0 = -10;   %// Initial condition for variable y

%// The ODEs. Note that z ≣ [x; y]
f = @(t,z) [
    z(2)        %// First ODE
    z(2)+2*t];  %// Second ODE

%// Call for ode15s solver
[t,g] = ode15s(f, [0 1], [x0 y0])

唯一要做的就是正确地解复用输出。

是什么让你认为你不能使用你提议的形式的函数?请注意,Simulink解决了系统在每个时间步所表示的微分方程,因此没有必要(您也不应该这样做)调用
ode15s
并尝试在MATLAB函数块中求解微分方程。@Rody Oldenhuis:我查看了MATLAB帮助中的嵌套函数部分,但我相信这可以在不需要嵌套函数和更少代码行的情况下完成。你的回答证明了我的观点。@am304:我不能让Simulink单独处理我的微分方程,因为我的自变量不是时间(Simulink取的独立变量也是时间);在我的代码中,时间控制块的输入,但不控制块内执行的操作。我只是好奇这是否会在Simulink环境中以我所希望的方式工作。感谢您的输入。@elporsche但是
ode15s
解关于时间的微分方程?