我使用matlab编码器将matlab代码转换为C.我在matlab中定义的简单数组在C中转换为复杂的结构。
struct emxArray_real_T
{
double *data;
int *size;
int allocatedSize;
int numDimensions;
boolean_T canFreeData;
};
如果有人能够阐明如何使用这个结构,那将是非常有帮助的。
答案 0 :(得分:3)
创建类型emxArray_real_T
是因为MATLAB Coder无法在MATLAB中确定数组大小的固定大小或足够小的边界,如2x3。在这种情况下,生成的代码允许数组的大小在运行时通过使用动态内存分配(例如malloc
)和此数据结构来表示您在C中的MATLAB数组。这些被称为动态分配的可变大小数组MATLAB Coder文档和结构字段用于跟踪生成的代码中动态分配的内存。
关于使用此类数组,@ horchler推荐的documentation是一个很好的起点。此外,您还可以查看此other answer,其中介绍了当存储的数据为struct
而不是uint32
或double
时使用相同real_T
的基础知识在你的情况下。
答案 1 :(得分:2)
Array是相同数据类型的集合,而结构是不同数据类型的集合。
在Matlab中,数组可以包含所有数据类型的变量。
这就是为什么当您尝试从Matlab数组转换为C数组时,它会转换为C结构而不是C数组,因为您的Matlab数组包含不同的数据类型。
答案 2 :(得分:0)