我试图弄清楚如何在 Simulink 模型的子系统中求解 ODE 系统。基本上,在模拟时钟的每个滴答声(固定步长)发生的对该子系统的每次调用都需要求解 ODE。所以子系统有一个不同的“时钟”。
我有一个实现 ODE 系统功能的 M 文件。目前,我有一个 MATLAB Function 块。它需要很多我可以从基础工作区(通过evalin
并coder.extrinsic('evalin')
在开始时使用)获得的参数。但是我不允许定义 function_handle 对象或内部函数来参数化 ode* 使用的函数。我认为如果我能够解决此块中的 ODE,我将解决我的问题。但这些限制正在“破坏”它。
如果您对如何完成此操作有任何想法,我将不胜感激。我欢迎不同的方法。
谢谢你。
编辑
下面给出一个简单的例子。mu
它试图通过随机改变参数来求解范德波尔方程。这是我目前的主要想法,由于上面提到的问题,它不起作用。
这是子系统的主要模型:
这是子系统:
这是 MATLAB Function 模块的实现(请注意,@ 符号中有错误,因为不允许定义 function_handle 对象):