matlab C++
大家好,我用C++编写个程序调用matlab进行多元线性回归,但是多元线性回归时多于5组数engGetVariable就没有返回值了,请问大虾们指导指导我呀,程序代码如下:
BOOL reg(double a[5],double b[5],double c[5],double res[6])
{
Engine *ep;
mxArray *T = NULL, *result = NULL;
if (!(ep = engOpen("\0"))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}
T = mxCreateDoubleMatrix(1,5, mxREAL);
memcpy((void *)mxGetPr(T), (void *)a, sizeof(a));
engPutVariable(ep, "x1", T);
memcpy((void *)mxGetPr(T), (void *)b, sizeof(b));
engPutVariable(ep, "x2", T);
memcpy((void *)mxGetPr(T), (void *)c, sizeof(c));
engPutVariable(ep, "x3", T);
if(0==engEvalString(ep, "x=[ones(5,1),x2',x3'];"))
engEvalString(ep, "[b,bint] =regress(x1',x)");
result = engGetVariable(ep,"b")
double *res4=mxGetPr(result);//得到回归矩阵的系数信息,组数大于5时engGetVariable就没有返回值了
for(int i=0;i<3;i++)
{
res7[i]=res4[i];
}
mxDestroyArray(T);
engEvalString(ep, "close;");
}
[解决办法]
问题太深奥了吧..
[解决办法]
我才开始学MATLAB
[解决办法]
n久没弄matlab了
[解决办法]
你的那个函数传参格式怎么是 a[5],数组作为函数参数传递时都是传的指针,不检查数组大小。
比如你看下这个程序执行结果。
#include <iostream>
using namespace std;
void fun(int a[5])
{
for (int i = 0; i < 5; ++i)
{
cout << a[i] << endl;
}
}
int main()
{
int a[4] = {2, 3, 4, 5};
fun(a);
}