matlab - 在 Simulink 中求解子系统内的 ODE

标签 matlab simulink matlab-coder subsystem

我正在尝试弄清楚如何求解 Simulink 模型中子系统内的 ODE 系统。基本上,每次调用此子系统(在模拟时钟的每个滴答声(固定步长)时发生)都需要求解 ODE。因此子系统有一个不同的“时钟”。

我有一个 M 文件,它实现了 ODE 系统的功能。目前,我有一个 MATLAB Function block 。它需要很多我可以从基础工作区获取的参数(通过 evalin 并在开头使用 coder.extrinsic('evalin'))。但是我不允许定义 function_handle 对象或内部函数来参数化 ode* 使用的函数。我认为,如果我能够解决这个模块中的 ODE,我就会解决我的问题。但这些限制正在“毁掉”它。

如果您对如何完成此操作有任何想法,我将不胜感激。我欢迎不同的方法。

谢谢。

编辑

下面给出了一个简单的例子。它试图通过随机更改 mu 参数来求解 van der Pol 方程。这是我目前的主要想法,由于上面提到的问题,它不起作用。

这是带有子系统的主要模型:

enter image description here

这是子系统:

enter image description here

这是 MATLAB Function block 的实现(请注意 @ 符号中有一个错误,因为不允许定义 function_handle 对象):

enter image description here

最佳答案

只需使用 MATLAB Function 模块作为包装器。将大部分代码放入“标准”MATLAB 函数(即一个可从 MATLAB 调用的函数,而不是 MATLAB Function block )并从 MATLAB Function block 调用该函数(在将其定义为 coder.extrinsic 之后)。

关于matlab - 在 Simulink 中求解子系统内的 ODE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32250794/

相关文章:

algorithm - 寻找最佳邻居像素

matlab - 具有大量输入的matlab中的直方图

Matlab:改变生产线规范

c - Piketec TPT java 自动化

matlab - 获取枚举字符串 - matlab编码器

c# - 如何在 C# 中从 RGB (565) 值绘制 2D 图像

创建定制的 S 功能 block ,并使用实时车间生成相同的 C 代码

simulink - Simulink 库和模型引用之间的区别

c - 在 Android Studio 中添加 MATLAB CODER 生成的 C

c++ - Matlab中perms的非递归实现,兼容Coder