以下参考自:
https://ww2.mathworks.cn/help/co ... s_tid=doc_srchtitle
有一些辅助函数可以使用:
emxArray_ *emxCreate_(int rows, int cols)
创建一个指向二维 emxArray 的指针,且将数据元素初始化为零。为数据分配新内存。
emxArray_ *emxCreateND_(int numDimensions, int *size)
创建一个指向 N 维 emxArray 的指针,且将数据元素初始化为零。为数据分配新内存。
emxArray_ *emxCreateWrapper_( *data, int rows, int cols)
创建一个指向二维 emxArray 的指针。使用您提供的数据和内存,并将其打包到一个 emxArray 数据结构体中。将 canFreeData 设置为 false 以防止无意中释放用户内存。
emxArray_ *emxCreateWrapperND_( *data, int numDimensions, int *size)
创建一个指向 N 维 emxArray 的指针。使用您提供的数据和内存,并将其打包到一个 emxArray 数据结构体中。将 canFreeData 设置为 false 以防止无意中释放用户内存。
void emxInitArray_(emxArray_ **pEmxArray, int numDimensions)
为指向 emxArray 的双精度指针分配内存。
void emxDestroyArray_(emxArray_ *emxArray)
释放由 emxCreate 或 emxInitArray 函数分配的动态内存。
使用范例:
使用 emxCreate 或 emxInitArray 函数创建 emxArray
emxCreate 和 emxCreateND API 函数可创建一个 emxArray,并根据需要从堆中分配新内存。然后,您可以使用 emxArray 作为生成代码的输入或输出。以下 C 代码示例说明如何使用 emxCreate。假设您已为使用数据类型 emxArray_uint32_T 的函数 myFunction 生成源代码。
#include
#include
#include "myFunction_emxAPI.h"
#include "myFunction.h"
int main(int argc, char *argv[])
{
/* Create a 10-by-10 uint32_T emxArray */
emxArray_uint32_T *pEmx = emxCreate_uint32_T(10,10);
/* Initialize the emxArray memory, if needed */
int k = 0;
for (k = 0; k < 100; ++k) {
pEmx->data[k] = (uint32_T) k;
}
/* Use pEmx array here; */
/* Insert call to myFunction */
/* Deallocate any memory allocated in pEmx */
/* This DOES free pEmx->data */
emxDestroyArray_uint32_T(pEmx);
/* Unused */
(void)argc;
(void)argv;
return 0;
}