gpt4 book ai didi

c - 为什么这段代码没有调用 Matlab 函数

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:47 25 4
gpt4 key购买 nike

我在 MATLAB 中编写了一个代码来添加两个数字。代码如下:

function [z] = addition(x,y)
z=x+y;
end

我已经用 C 编写了另一个代码来调用这个加法函数。代码如下:

#include "mex.h"

void mexFunction (int nlhs, mxArray* plhs[],
int nrhs, const mxArray* prhs[])
{
mxArray *a,*b,*c;
a=mxCreateDoubleMatrix(1, 1, mxREAL);
b=mxCreateDoubleMatrix(1, 1, mxREAL);
a=1;
b=1;
mexCallMATLAB(1,&c, 2, &b, &a, "addition");
mexCallMATLAB(0,NULL,1, &c, "disp");
mxDestroyArray(a);
mxDestroyArray(b);

return;
}

请告诉我为什么它不起作用???谢谢

最佳答案

代码有几个问题:

  • 您为 mxArray 的 ab 赋值的方式不正确。
  • 您将输入传递给 mexCallMATLAB 的方式也不正确

这是我的实现:

调用地址.c

#include "mex.h"

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

in[0] = mxCreateDoubleScalar(5);
in[1] = mxCreateDoubleScalar(4);

mexCallMATLAB(1, out, 2, in, "addition");
mexCallMATLAB(0, NULL, 1, out, "disp");

mxDestroyArray(in[0]);
mxDestroyArray(in[1]);
mxDestroyArray(out[0]);
}

这基本上等同于在 MATLAB 中调用 disp(addition(5,4))

关于c - 为什么这段代码没有调用 Matlab 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961234/

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