首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

matlab C++,该如何处理

2013-02-04 
matlab C++大家好,我用C++编写个程序调用matlab进行多元线性回归,但是多元线性回归时多于5组数engGetVaria

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);
}

热点排行