gpt4 book ai didi

c - 将整数分配给指针的 mxArray

转载 作者:行者123 更新时间:2023-11-30 14:51:28 25 4
gpt4 key购买 nike

我正在尝试使用函数 mexCallMATLAB 作为 described here .

但是,我总共有 4 个输入参数,因此我通过这样做创建了一个 mxArray

mxArray *funcInputs[4]; 

我想用 vector 分配前三个指针(我已经成功完成了)。然而,对于最后一个指针,我想给它赋一个整数,但没有成功。

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

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 未传递给该函数。

我怎么把事情搞砸了?

最佳答案

您在这段代码中做什么:

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

创建一个mxArray对象并将其指针分配给指针数组的第4个元素,然后用第一个字节覆盖mxArray对象的第一个字节一个int

mxArray 是一个对象,其中包含有关其大小和类型的信息以及指向实际数组数据的指针。您可以使用 mxGetPr 获取此指针:

double* ptr = mxGetPr(funcInputs[3]);

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

*ptr = 33;

mxPr 始终返回 double 值。如果您的矩阵属于不同类型,则需要使用不同的访问器。请参阅documentation .

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

funcInputs[3] = mxCreateDoubleScalar(33);

关于c - 将整数分配给指针的 mxArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com