将整数分配给mxArray指针

时间:2018-01-17 05:45:29

标签: c matlab mex

我尝试将函数mexCallMATLAB用作described here

但是,我总共有4个输入参数,所以我通过

创建了mxArray
mxArray *funcInputs[4]; 

我想用向量分配前三个指针(我已成功完成)。但是,对于最后一个指针,我想为它分配一个整数,但无济于事。

这是我到目前为止所做的:

funcInputs[3] = mxCreateDoubleMatrix(1,1,mxREAL);
int total = 33;
std::memcpy(funcInputs[3], &total, 1);

mex函数成功编译但未传递值33

我试图执行这样的功能:

mxArray *outs[2];
mexCallMATLAB(2, outs, 4, funcInputs, "myFunction");

mexCallMATLAB会按预期调用函数myFunction,但值33不会传递给函数。

我是怎么搞砸的?

1 个答案:

答案 0 :(得分:1)

你在这段代码中做了什么:

describe

创建一个fdescribe对象并将其指针指向指针数组的第4个元素,然后用funcInputs[3] = mxCreateDoubleMatrix(1,1,mxREAL); int total = 33; std::memcpy(funcInputs[3], &total, 1); 的第一个字节覆盖mxArray对象的第一个字节

mxArray是一个对象,它包含有关其大小和类型的信息,以及指向实际数组数据的指针。您可以使用http://www.w3.org/2001/10/xml-exc-c14n#

获取此指针
int

然后您可以将您的值分配到指向的位置:

mxArray

double* ptr = mxGetPr(funcInputs[3]); 总是返回一个双精度数。如果您的矩阵属于不同类型,则需要使用其他访问者。请参阅http://www.w3.org/2001/04/xmlenc#sha256

请注意,上面的所有代码都可以替换为单个函数调用:

*ptr = 33;