Matlab Coder:Matlab 数组到 C 数组
Matlab Coder : Matlab Array to C Array
我使用 matlab 编码器将 matlab 代码转换为 C。我在 matlab 中定义的简单数组在 C 中转换为复杂的结构。
struct emxArray_real_T
{
double *data;
int *size;
int allocatedSize;
int numDimensions;
boolean_T canFreeData;
};
如果有人能阐明如何使用此结构,那将会很有帮助。
C 编程语言(以及许多派生语言)中的 struct
是一种复杂的数据类型声明,它定义了一个物理分组的变量列表,这些变量被放置在内存块中的一个名称下,允许不同的要通过单个指针访问的变量,或结构声明的名称 returns 相同的地址。该结构可以在关联中包含许多其他复杂和简单的数据类型。
因此 C 中的结构基本上是其中包含物理分组的变量列表的数组。
数组是相同数据类型的集合,而结构是不同数据类型的集合。
在 Matlab 中,数组可以包含所有数据类型的变量。
这就是为什么当您尝试从 Matlab 数组转换为 C 数组时,它正在转换为 C 结构而不是 C 数组,因为您的 Matlab 数组包含不同的数据类型。
创建类型 emxArray_real_T
是因为 MATLAB Coder 无法确定固定大小或 MATLAB 中数组大小的足够小的界限,例如 2x3。在这种情况下,生成的代码允许数组的大小在运行时通过使用动态内存分配(例如 malloc
)和此数据结构来表示您在 C 中的 MATLAB 数组。这些在中称为动态分配的可变大小数组MATLAB Coder 文档和结构字段用于跟踪生成代码中动态分配的内存。
关于使用此类数组,documentation recommended by @horchler is a good place to start. Also, you can have a look at this other answer 描述了当存储的数据为 uint32
而不是 double
时使用相同 struct
的基础知识或 real_T
你的情况。
我使用 matlab 编码器将 matlab 代码转换为 C。我在 matlab 中定义的简单数组在 C 中转换为复杂的结构。
struct emxArray_real_T
{
double *data;
int *size;
int allocatedSize;
int numDimensions;
boolean_T canFreeData;
};
如果有人能阐明如何使用此结构,那将会很有帮助。
C 编程语言(以及许多派生语言)中的 struct
是一种复杂的数据类型声明,它定义了一个物理分组的变量列表,这些变量被放置在内存块中的一个名称下,允许不同的要通过单个指针访问的变量,或结构声明的名称 returns 相同的地址。该结构可以在关联中包含许多其他复杂和简单的数据类型。
因此 C 中的结构基本上是其中包含物理分组的变量列表的数组。
数组是相同数据类型的集合,而结构是不同数据类型的集合。
在 Matlab 中,数组可以包含所有数据类型的变量。
这就是为什么当您尝试从 Matlab 数组转换为 C 数组时,它正在转换为 C 结构而不是 C 数组,因为您的 Matlab 数组包含不同的数据类型。
创建类型 emxArray_real_T
是因为 MATLAB Coder 无法确定固定大小或 MATLAB 中数组大小的足够小的界限,例如 2x3。在这种情况下,生成的代码允许数组的大小在运行时通过使用动态内存分配(例如 malloc
)和此数据结构来表示您在 C 中的 MATLAB 数组。这些在中称为动态分配的可变大小数组MATLAB Coder 文档和结构字段用于跟踪生成代码中动态分配的内存。
关于使用此类数组,documentation recommended by @horchler is a good place to start. Also, you can have a look at this other answer 描述了当存储的数据为 uint32
而不是 double
时使用相同 struct
的基础知识或 real_T
你的情况。