请问:
    我编写了一个.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);
    
    在执行最后一句时出错,请问高手这是什么原因?该如何改正?

解决方案 »

  1.   

    我下学期也要学小波~~555调试了没有啊?mlfLiftingwavelettransform(1,&Y,X,F,LEVEL);执行完了好像Y还是null吧?
    double *b = mxGetPr(Y);就当然出错了。把
    int f[] = {flag};        改成       double f[]={flasg};
    int level[] = {n};       改成       double level[] = {n};再调试看看。