0

我目前正在使用此代码:

assert(isa(values,'double'));
assert(size(values, 1) <= 1000);

说服 matlab 编码器将值设为一维数组。最终目标是能够通过 C# 和 PInvoke 与其交互。这将创建一个包含以下内容的 C 签名:

const real_T values[1000], const int32_T values_size[1]

即使对于长度小于 1000 的一维数组,我似乎也可以使用它。是否有更巧妙的方法来实现上述目标(即断言值是无限长度的一维数组)?

PS:

我也用过:

assert(all(size(values) == [1 Inf]));

但现在搁置了这个,因为创建的结构似乎非常复杂(另见这里),我不知道如何从 C# 填充它。

4

1 回答 1

1

Matlab 编码器现在似乎支持动态内存分配(我上次在 2008 年左右使用它时不是这种情况)。

一个完整的例子:http ://www.mathworks.de/products/matlab-coder/examples.html?file=/products/demos/shipping/coder/coderdemo_atoms.html

更新:对于动态大小的数组 Matlab 使用 EMX 数据结构: http: //www.mathworks.de/de/help/fixedpoint/ug/c-code-interface-for-unbounded-arrays-and-structure-fields.html

于 2013-02-18T13:28:38.453 回答