我使用 matlab 编码器将 matlab 代码转换为 C。我在 matlab 中定义的简单数组在 C 中转换为复杂的结构。
struct emxArray_real_T
{
double *data;
int *size;
int allocatedSize;
int numDimensions;
boolean_T canFreeData;
};
如果有人能阐明如何使用这个结构,那将很有帮助。
最佳答案
emxArray_real_T
类型的创建是因为 MATLAB Coder 无法确定固定大小或 MATLAB 中数组大小的足够小的边界,例如 2x3。在这种情况下,生成的代码允许数组的大小在运行时通过使用动态内存分配(例如 malloc
)和此数据结构来表示您在 C 中的 MATLAB 数组。这些称为动态分配的变量MATLAB Coder 文档中的大小数组和结构字段用于跟踪生成的代码中动态分配的内存。
关于使用此类数组,documentation @horchler 推荐的是一个很好的起点。另外,你可以看看这个 other answer它描述了当存储的数据是 uint32
而不是 double
或 real_T
时使用相同 struct
的基础知识你的情况。
关于c - Matlab编码器: Matlab Array to C Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32303282/