请问:
我编写了一个.m文件用来做提升小波变换,该文件用Matlab测试结果完全正确,将其变换为.dll函数后,调用时得到结果矩阵,在读取结果矩阵时出现错误:
程序代码如下:
// 创建测试数据的矩阵
mxArray *X = mxCreateDoubleMatrix(4,4,mxREAL);
double x[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; // 输出矩阵,即结果保存到矩阵Y中
mxArray *Y = NULL; // 小波基标志:选择哪种小波基进行变换
mxArray *F= mxCreateDoubleMatrix(1,1,mxREAL);
int f[] = {flag}; // 提升小波变换次数
mxArray *LEVEL = mxCreateDoubleMatrix(1,1,mxREAL);
int level[] = {n};
// 将x中数据赋值给矩阵X,将f中数据赋值给矩阵F,将level中数据赋值给矩阵LEVEL
memmove(mxGetPr(X),x,16 * sizeof(double));
memmove(mxGetPr(F),f,1*sizeof(double));
memmove(mxGetPr(LEVEL),level,1*sizeof(double));
// 调用dll函数,进行提升小波变换
mlfLiftingwavelettransform(1,&Y,X,F,LEVEL); // 将变换后的矩阵Y中数据赋值给b
double *b = mxGetPr(Y);
在执行最后一句时出错,请问高手这是什么原因?该如何改正?
我编写了一个.m文件用来做提升小波变换,该文件用Matlab测试结果完全正确,将其变换为.dll函数后,调用时得到结果矩阵,在读取结果矩阵时出现错误:
程序代码如下:
// 创建测试数据的矩阵
mxArray *X = mxCreateDoubleMatrix(4,4,mxREAL);
double x[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; // 输出矩阵,即结果保存到矩阵Y中
mxArray *Y = NULL; // 小波基标志:选择哪种小波基进行变换
mxArray *F= mxCreateDoubleMatrix(1,1,mxREAL);
int f[] = {flag}; // 提升小波变换次数
mxArray *LEVEL = mxCreateDoubleMatrix(1,1,mxREAL);
int level[] = {n};
// 将x中数据赋值给矩阵X,将f中数据赋值给矩阵F,将level中数据赋值给矩阵LEVEL
memmove(mxGetPr(X),x,16 * sizeof(double));
memmove(mxGetPr(F),f,1*sizeof(double));
memmove(mxGetPr(LEVEL),level,1*sizeof(double));
// 调用dll函数,进行提升小波变换
mlfLiftingwavelettransform(1,&Y,X,F,LEVEL); // 将变换后的矩阵Y中数据赋值给b
double *b = mxGetPr(Y);
在执行最后一句时出错,请问高手这是什么原因?该如何改正?
double *b = mxGetPr(Y);就当然出错了。把
int f[] = {flag}; 改成 double f[]={flasg};
int level[] = {n}; 改成 double level[] = {n};再调试看看。