问题标签 [matlab-coder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - 嵌入式 MATLAB 功能块中不支持动态内存的解决方法
背景:
我继承了离散事件仿真 MATLAB 模型,并希望自动化并加快其执行速度。我想要一个类似于调用 system('modelName.exe ...') 的解决方案,而不是调用 sim(modelName) 并让 MATLAB 运行解释代码。我这样做的动机来自最初的测试,这些测试表明速度提高了近 1000%。我已经设法使用带有快速模拟目标的实时研讨会来生成具有静态内存分配的 exe。问题是模型中有嵌入式 MATLAB 功能块,每次运行时参数的大小和形状都会有所不同。即使不是数千次,也会有数百次运行。
根据 MathWorks 文档:
“您不能在 Embedded MATLAB Function 块中为可变大小数据使用动态内存分配。使用有界而不是无界的可变大小数据。”
问题:
这种限制的潜在解决方法是什么?
想法:
- 使用足够大的静态变量大小,并另外传递 int 变量/可调参数以显式窗口化要覆盖的数据部分。
- S函数?
- 我今天要实现的内容:每次调用模拟以动态生成静态代码时,以编程方式重新编译模拟。
- 将所有内容移植到真正/现代的编程语言,例如 python 或 c++。
关键词: MATLAB 动态内存分配 嵌入式离散事件仿真 Real-Time Workshop Simulink SimEvents 可调参数
matlab - 如何在 Simulink 的嵌入式 Matlab 函数中迭代结构?
我遇到了一个障碍,我试图迭代在 SIMULINK 中的 EML(嵌入式 Matlab)功能块内的 MATLAB 工作区中形成的结构。这是一些示例代码:
MyElements 是 SIMULINK 中 MATLAB 功能块 (EML) 的总线类型参数。以下是我遇到麻烦的领域。我知道我的结构中的元素数量并且我知道名称,但是元素的数量可以随任何配置而改变。所以我不能根据元素名称进行硬编码。我必须遍历 EML 块内的结构。
关于如何在 SIMULINK 中迭代结构类型的任何想法?另外,我不能使用任何像 num2str 这样的外部函数,因为这是要在目标系统上编译的。
matlab - 常量和 Matlab 编码器
在 Matlab Coder 中运行时,某些函数要求输入为常数。我希望找到一种方法在输入之前将输入声明为常量,作为有问题的情况的示例:
这将返回错误“所有输入必须是常量”
如何将x 和 y 声明为常量,以便让 butter() 开心?我尝试了很多解决方案,但不幸的是没有发现任何真正令人满意的东西。如果可以使用命令行操作coder.newtype('constant',x)
,它将简化一切。
c++ - codegen matlab to c++ :- 尝试构建基于 c++ 的 .exe 而不是 c 时出现问题?
我在使用 codegen 时遇到了一些问题(通过 gui 界面)。
我已经基于以下两个文件成功构建了一个非常简单的基于 c 的 .exe 程序。
码兰德.m
主程序
如果我现在尝试将 main.c 更改为 main.cpp 中的相同代码,
主文件
我收到以下编译错误。
非常感谢任何帮助。
编辑: - 自己解决...
对于那些遇到同样问题的人...
编码器 -> 更多设置 -> 所有设置 -> 高级 -> 语言..将 C 更改为 C++
matlab - Simulink 中的 Matlab 函数不支持 RMS
Simulink 有一个名为“Matlab Function”的模块,允许您在 Simulink 流程图中创建自定义函数。
我在 Simulink Matlab Function 模块中实现了一个简单的函数。我的函数包含对 Matlab 内置的rms()
. 当我运行 Simulink 模型时,我收到以下错误:
如果我rms
从 Simulink 模型中的 Matlab 函数中删除,错误就会消失并且模型运行完美。
问题:
- 有没有办法
rms
在 Simulink 中使用 Matlab? - Simulink 中是否还有许多其他本机 Matlab 调用无法使用?
c - 使用 Matlab 编码器将 Matlab 代码转换为 C
我有一些工作的 Matlab 代码,我尝试使用 Matlab 编码器将其转换为 C 代码。我收到此错误:
它看起来对我来说非常 C 特定(我不是一个精通 C 程序员)。谁能指出我正确的方向来克服这个错误?谢谢。
PS:
这是一些改编的 Matlab 代码:
其中“参数”是一个结构。我想坚持我的结构,但如果有更好的方法来实现上述目标,特别是在 Matlab 编码器和 C 的上下文中,请告诉我。
matlab - 获取枚举字符串 - matlab 编码器
我有一个这样的枚举:
我可以像这样得到“元素的字符串表示”:
=>
不幸的是,matlab 编码器不喜欢这样。有没有其他选择?
matlab - 断言无限长度的一维双数组(matlab编码器)
我目前正在使用此代码:
说服 matlab 编码器将值设为一维数组。最终目标是能够通过 C# 和 PInvoke 与其交互。这将创建一个包含以下内容的 C 签名:
即使对于长度小于 1000 的一维数组,我似乎也可以使用它。是否有更巧妙的方法来实现上述目标(即断言值是无限长度的一维数组)?
PS:
我也用过:
但现在搁置了这个,因为创建的结构似乎非常复杂(另见这里),我不知道如何从 C# 填充它。
c# - 为二维情况调整包装类
这个问题是这个问题的延伸。
我想为二维情况调整包装器。这是我的第一次尝试:
PS:
原始 matlab 代码如下所示:
并且可以像这样调用:
生产:
不幸的是,生成的 C 无法达到 Matlab 可以达到的效果(即返回一个数组):