问题标签 [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.

0 投票
0 回答
442 浏览

c++ - Matlab图像转换器问题

我想使用 Matlab 编码器的输出进行图像处理。我从 Matlab 编码器创建了一个 c++ 输出,我想使用此代码将其集成到其他应用程序中。问题是我们不确切知道 Matlab 编码器如何将图像矩阵生成为const unsigned char[...]。如果有任何可能检查它的创建方式,那将是非常有帮助的。这样我们就可以将图像创建为 unsigned char[..],以同样的方式将其转换回图像。

这是matlab生成的代码

根据以下给出的建议,我在将 unsigned char 从 cpp 文件转换为多维数组时遇到问题。但是我必须以 c[] w[] h[] 的格式表示数据,我很困惑如何将红色、绿色、蓝色信息表示为 c[]。我很困惑这是表示它的正确方法(如您所见,此函数旨在获取 const unsigned char[])并创建具有三维 c[] w[] h[] 矩阵的输出。任何帮助都会很棒

0 投票
1 回答
352 浏览

c - 从 VB.Net 读取 MatLab Simulink 值

这是理想的目标。

我们有一个 simulink 模型,当它运行时,我们希望将所有结果值发送到我们的 vb.net 应用程序。

我想我已经找到了一些方法,但在潜入之前想要一些输入。我过去没有使用过 matlab 或 simulink,这使得这比现在更难。

matlab 有一个 COM 对象,但不允许在 simulink 运行时实时访问变量。Simulink 仅在完成后将其数据转储到 matlab。

选项#1:回调?我一直在阅读,似乎我能够向块添加回调,以便基于计时器将值发送到 matlab。然后我必须不断地从 vb 调用 matlab 来获取这些值。这似乎效率不高,并且可能会在同时运行 simulnk 的情况下占用大量资源? 如何将 Simulink 模块中的数据导入 MATLAB GUI?

选项 #2:我在 mathworks 网站上找到了一个“Simulink Coder”,这似乎是理想的解决方案,但如果这里有人使用过它,我想澄清一下。我已经申请了试用,但在我得到它之前还有几个箍要跳过。

在我看来,编码员会采用 simulink 模型并在 C/C++ 代码中创建算法?这是否意味着我可以创建一个 C 应用程序并将该代码用作源代码?因此,与其在我的应用程序中运行 simulink,不如只运行代码并输入参数来为我们提供输出变量?

我也一直在阅读一些关于 matlab 输出 DLL 或 mux 的信息?那么可以与.net 应用程序一起使用吗?

任何输入/意见表示赞赏:)

0 投票
2 回答
2973 浏览

c - How to use C library created by MATLAB Coder codegen in C program with emxArray arguments?

The C function (C static library) created by codegen takes an input argument of type const emxArray_uint32_T and return values of type emxArray_struct_T. As the type suggests, input is an array of uint32 and output is an array of struct.

I'm not sure how to use this function in my C program. For the input, should I declare an array of type uint32_T or use the type emxArray_uint32_T ? For the output, because I don't know the size of the output array, how to declare the array of struct to receive the return values from the function?

I put the question in MATLAB answers but have not luck..

Thanks!

0 投票
2 回答
2678 浏览

matlab - 在没有“字段名”的情况下遍历 MATLAB 中的结构

在 MATLAB 中迭代结构数据类型的常用方法是使用如下所示的fieldnames()函数:

不幸的是,这总是会生成单元格数据类型,我想将这种迭代用于 SIMULINK 中的 Matlab 功能块,由于代码生成原因不允许单元格数据类型。

有没有办法在不同时使用单元数据类型的情况下迭代结构?

在 Octave 中有一种简洁的方法,在https://www.gnu.org/software/octave/doc/interpreter/Looping-Over-Structure-Elements.html

有人知道 MATLAB 中的类似方法吗?

0 投票
1 回答
4055 浏览

matlab - 使用 MATLAB 功能块在 Simulink 中生成随机数

我试过用谷歌搜索这个问题并在这里搜索问题和答案,但我没有找到我的问题的明确答案,所以我正在制作一个新问题。希望不会太麻烦!

我正在 Simulink 中创建一个仿真,其中我有一个“MATLAB 函数”块,它应该从另一个源获取输入(我们可以将此源视为“常量”块),然后应用从生成的随机数输入上的 MATLAB 功能块。

我的问题是每次运行 Simulink 仿真时都会得到完全相同的随机数。我想知道是否有人可以帮助我解决我的问题?

这是代码(不是全部,但所有重要的):

我已阅读有关此解决方案的信息:

我以不同的方式使用它,但没有成功。一些帮助将不胜感激!哦,顺便说一句,我正在使用 MATLAB R2012a。

提前致谢, 尼克拉斯

0 投票
2 回答
584 浏览

c - 如何使用 MATLAB 编码器将 matlab 转换为 C

我想使用 MATLAB 编码器将 matlab 代码转换为 C 代码,但效果不佳。

我试图在 matlab 代码下面.. 并使用 MATLAB 编码器构建

但是有一些错误。喜欢..

编码器-build ex1.prj ??? 'audiorecorder' 类不支持代码生成。

所以,我试图删除录音机功能,但它也不起作用。

我不知道这些代码有什么问题。我该怎么办?请帮忙。

0 投票
0 回答
234 浏览

matlab - 使用 Matlab Coder capi 在运行时更改状态

我需要在运行时更改 Matlab Coder 生成的应用程序的状态。我知道我可以通过 CAPI 在运行时访问(并因此更改)模型的状态。我可以设置新值还是需要做其他事情?我担心我可能会破坏求解器。

我正在研究用于飞机模拟的飞行模型,它使用 Aerospace Block Set 和一些自定义块,我使用 Simulink Coder 将其转换为 C++ 代码。我需要在不停止执行的情况下重新定位和重新定向飞机,这涉及在自定义块(离散状态)上设置 X、Y、Z 和 6DoF EOM(连续状态)和纬度和经度的四元数值。我还需要影响速度,这意味着改变 UV W。

谢谢

0 投票
2 回答
23335 浏览

python - c 结构的 Python ctypes 定义

我正在尝试调用一些由 Matlab 编码器生成的 c 代码。Matlab 使用名为 emxArray 的 ac 结构来表示矩阵(记录在此:http: //www.mathworks.co.uk/help/fixedpoint/ug/c-code-interface-for-unbounded-arrays-and-structure-fields.html)。

我几乎没有 ctypes 的经验,并且正在努力创建一个等效的结构,然后我可以使用它来来回传递向量到 c .so 中定义的函数

这是我到目前为止在 python 中得到的地方......

但是,如果我定义这个:

这然后工作

编辑:我已经整理并采纳了 Roland 的建议,可以使用

我需要进一步调查,看看我是否可以成功地使用这个结构来传递和接收来自 c 代码的数据。

解决方案

按照 Roland 的建议实现 ctypes 结构没有用 - 返回的值是垃圾,我从来没有弄清楚为什么我追求基于 python 的 lilbil 答案的实现。我已经接受了这个答案,因为它最接近......

我将在这里记录我的解决方案,因为它可能会节省其他人浪费的时间。

首先,我生成了一个简单的 matlab 函数,该函数将函数的每个元素自身相乘并使用编码器将其编译为 ac .so。这是使用 ctypes 导入到 python 的。代码如下...

输出:

感谢大家的时间和建议。

0 投票
1 回答
1362 浏览

c++ - Matlab C++ - 接收动态大小输出类型 (emxArray_real_T)

我已经使用 coder 将一些 matlab 代码转换为 C++。

void myfunction(const emxArray_real_T *input, emxArray_real_T *output){ ... }

我已经设置发送emxArray_real_T类型输入没有任何问题。如何设置在调用的 C++ 中接收动态大小的输出myfunction

代码更新:

这编译得很好,但错误说 *** glibc detected *** /data/myscript : double free or corruption (!prev): 0x000000000de54920 ***

0 投票
1 回答
1406 浏览

matlab - 预期标量值:MATLAB Coder

使用 MATLAB coder 从 m 文件生成 c++ 代码并调用 ac 函数 ompmex.c 时出现以下错误

C 函数调用总是返回标量值,但这里需要一个非标量值。

我的代码是:

任何人都可以帮助解决这个问题。我在网上没有得到有效的答案