void dwt2d_inverse_bspline(double *data,int order,int n,int ns) { gsl_wavelet_workspace *work; gsl_wavelet *w; gsl_matrix *m1; gsl_matrix_view m; int i,j; long dims[3]={2,n,n}; double *res = ypush_d(dims); int k=0; for (i=0;i<n;i++) { for (j=0;j<n;j++) { k = j+i*n; res[k] = data[k]; } } w = gsl_wavelet_alloc(gsl_wavelet_bspline, order); work = gsl_wavelet_workspace_alloc(n*n); if (ns == 1) gsl_wavelet2d_nstransform_inverse(w, res, n, n, n,work); else gsl_wavelet2d_transform_inverse(w, res, n, n, n,work); gsl_wavelet_workspace_free (work); gsl_wavelet_free (w); }
/** * C++ version of gsl_wavelet2d_nstransform_inverse(). * @param data Data array * @param tda Physical row length * @param size1 Number of rows * @param size2 Number of columns * @param work Supply a workspace of appropriate (undocumented) size * @return Error code on failure */ int nstransform_inverse( double* data, size_t tda, size_t size1, size_t size2, wavelet::workspace& work ) const { return gsl_wavelet2d_nstransform_inverse( get(), data, tda, size1, size2, work.get() ); }