希望大家帮忙,问题如下:
在VS2008 VC++中调用matlab2010a中的函数[A,B,r,U,V]=canoncorr(X,Y),与在matlab中直接输入X,Y然后计算[A,B,r,U,V]=canoncorr(X,Y)所得到的A,B,r,U,V结果值不同。下面是在VC中使用引擎的方法,代码如下,X,Y数据太多此处不给出,希望大家给指点一下
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "engine.h"
int main()

{
Engine *ep;
mxArray *X = NULL, *Y = NULL;
double _x[5][1152]={};
double _y[5][1152]={};
double _z[5][4]={0};
if (!(ep = engOpen("\0"))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}
X= mxCreateDoubleMatrix(5, 1152, mxREAL);
memcpy((void *)mxGetPr(X), (void *)_x, sizeof(_x));
Y= mxCreateDoubleMatrix(5, 1152, mxREAL);
memcpy((void *)mxGetPr(Y), (void *)_y, sizeof(_y));
engPutVariable(ep, "X", X);
engPutVariable(ep, "Y", Y);
engEvalString(ep, "[A,B,r,U,V]=canoncorr(X,Y);");

/*
* Plot the result
*/
engEvalString(ep, "plot(U);");
fgetc(stdin);
mxDestroyArray(X);
mxDestroyArray(Y);
engClose(ep);

return EXIT_SUCCESS;
}