我目前正在使用此代码:
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#填充它。
答案 0 :(得分:1)
Matlab编码器现在似乎支持动态内存分配(当我上次在2008年左右使用它时不是这种情况)。
更新:对于动态大小的数组,Matlab使用EMX数据结构:http://www.mathworks.de/de/help/fixedpoint/ug/c-code-interface-for-unbounded-arrays-and-structure-fields.html