Matlab Coder:Matlab数组到C数组

时间:2015-08-31 02:37:59

标签: c matlab matlab-coder

我使用matlab编码器将matlab代码转换为C.我在matlab中定义的简单数组在C中转换为复杂的结构。

struct emxArray_real_T
{
  double *data;
  int *size;
  int allocatedSize;
  int numDimensions;
  boolean_T canFreeData;
};

如果有人能够阐明如何使用这个结构,那将是非常有帮助的。

3 个答案:

答案 0 :(得分:3)

创建类型emxArray_real_T是因为MATLAB Coder无法在MATLAB中确定数组大小的固定大小或足够小的边界,如2x3。在这种情况下,生成的代码允许数组的大小在运行时通过使用动态内存分配(例如malloc)和此数据结构来表示您在C中的MATLAB数组。这些被称为动态分配的可变大小数组MATLAB Coder文档和结构字段用于跟踪生成的代码中动态分配的内存。

关于使用此类数组,@ horchler推荐的documentation是一个很好的起点。此外,您还可以查看此other answer,其中介绍了当存储的数据为struct而不是uint32double时使用相同real_T的基础知识在你的情况下。

答案 1 :(得分:2)

Array是相同数据类型的集合,而结构是不同数据类型的集合。

在Matlab中,数组可以包含所有数据类型的变量。

这就是为什么当您尝试从Matlab数组转换为C数组时,它会转换为C结构而不是C数组,因为您的Matlab数组包含不同的数据类型。

答案 2 :(得分:0)

C编程语言中的struct(以及许多衍生产品)是一种复杂的数据类型声明,它定义了一个物理分组的变量列表,这些变量列表放在一个内存块中的一个名称下,允许不同的变量可以通过单个指针访问,也可以通过struct声明的名称来返回相同的地址。结构可以在关联中包含许多其他复杂和简单的数据类型。

因此,C中的Struct基本上是一个物理分组的变量列表数组。

如果你真的希望只使用简单的数组here来获得它的基本工作和语法。 和here for struct及其基本工作和语法。