如何将 float[][] 类型数组转换为“emxArray_real_T *x”

Gau*_*sal 3 c matlab matlab-coder

我已经转换了一个函数,该函数将 NxN 矩阵作为输入,并使用 MatlabCoder 从 matlab 到 C 提供 NxN 矩阵输出。它给了我具有两个参数的函数,即

void func(const emxArray_real_T *x, emxArray_real_T *y)
Run Code Online (Sandbox Code Playgroud)

我知道 x 是函数的输入,我可以从 y 获得函数的输出。问题是我在 float[][] 中有一个数组,我希望将此数据作为输入提供给 func,它只将 emxArray_real_T *x 作为输入。

关于如何将此 float[][] 数据转换为 emxArray_real_T *x 的任何想法

emxArray_real_T 有这个结构

struct emxArray_real_T
{
    real_T *data;
    int32_T *size;
    int32_T allocatedSize;
    int32_T numDimensions;
    boolean_T canFreeData;
};
Run Code Online (Sandbox Code Playgroud)

The*_*ist 5

基本上你需要有指向数组的*data成员。在 C 中,数据以精度存储。相应地更新其他成员。emxArrayfloatfloatsingleemxArray

您可能需要查看有关数组的 C 代码接口MathWorks 文档

这个答案包含在C# 中double数据类型实现的完全相同的场景。