gpt4 book ai didi

c - 解引用指向 MxArray 的指针

转载 作者:行者123 更新时间:2023-12-02 09:35:33 25 4
gpt4 key购买 nike

我遇到了一些指针困惑:

我有一些(数值配方)C 函数 fitexy(in, &out),我想将其编译为 .mex 文件以从 matlab 调用它。但是,我无法让网关例程访问out指针,以便将其传递给plhs[0],我该如何这样做吗?

我得到的最接近的(从最不令人困惑的错误消息的意义上来说)是这样的:

void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[]){
float *in;
float out;

in = (float *)mxGetData(prhs[0]);
plhs[0] = mxCreateNumericMatrix(1,1,mxSINGLE_CLASS,mxREAL);
out = (float *)mxGetData(plhs[0]);

fitexy(in, &out);

printf("out = %lf", &out); /*Prints the correct result to the screen*/
}

这会导致编译时出现错误消息:

error: incompatible types when assigning to type ‘float’ from type ‘float *’

这对我来说并不太令人惊讶,但也不是很有帮助。我尝试强制转换/取消引用 mxGetData(plhs[0]),

的输出
out     = (float &)mxGetData(plhs[0]);

这似乎有点无稽之谈,

out     = (float)mxGetData(plhs[0]);

这与作为变量的 out 和作为指针的 mxGetData(plhs[0]) 发生冲突。

我已经找到Save a variable (float *) to plhsHow to return a float value from a mex function, and how to retrieve it from m-file? ,但它们都处理转换而不是取消引用。

我明白了cannot convert parameter 2 from 'mxArray **' to 'mwArray &' ,但这对我没有帮助,因为我无法(即不愿意)更改对我的 C 例程的调用。

非常感谢任何帮助,非常感谢!

最佳答案

为什么不直接将 out 定义为指针?

float * out;

这样你就可以轻松做到

out     = (float *)mxGetData(plhs[0]);

您可以使用out来写入结果值。如果我没有弄错 fitexy() 函数,您可以使用

调用它
fitexy(in, out);

.

关于c - 解引用指向 MxArray 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26604968/

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