断言无限长度的一维双数组(matlab编码器)

时间:2013-02-18 12:59:10

标签: matlab pinvoke matlab-coder

我目前正在使用此代码:

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]));

但暂时搁置这个,因为创建的结构似乎非常复杂(另请参阅here),我不知道如何从C#填充它。

1 个答案:

答案 0 :(得分: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