gpt4 book ai didi

带有输出的 C++ mex 文件错误

转载 作者:行者123 更新时间:2023-11-30 02:25:06 29 4
gpt4 key购买 nike

我对 mex 文件有点陌生,我正在尝试在 C++ 中创建一个函数来加速计算。但是我遇到了一些使 Matlab 崩溃的错误,我不明白为什么。

我调试了很多次,最后发现问题出在主mexFunction之外的函数上,但我不知道如何解决。我创建了一个示例代码来说明问题:

#include <iostream>
#include <mex.h>

double simplesum (double a, double b){
double sum;
sum = a+b;
return(sum);
}

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
double *a, *b,*out;
a = mxGetPr(prhs[0]);
b = mxGetPr(prhs[1]);
out = mxGetPr(plhs[0]);
double sum;
sum=simplesum(*a,*b);
*out = sum;
}

如果我不调用函数 simplesum 一切正常,但我想使用它(在我更复杂的代码中)。

是内存分配问题还是其他问题?

最佳答案

您还可以使用 mxGetScalar 直接获取右侧的值。 Out 可以指向 double 值的 1x1 矩阵。

#include <iostream>
#include <mex.h>

double simplesum (double a, double b,double *out){
out[0] = a+b;
}

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
double a, b, *out;
plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL);
a = mxGetScalar(prhs[0]);
b = mxGetScalar(prhs[1]);
out = mxGetPr(plhs[0]);
simplesum(a,b,out);
}

关于带有输出的 C++ mex 文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44777779/

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