📄 comp_wfac.c
字号:
#include "mex.h"#include "config.h"#include "../src/wfac.c"#include "../src/gcd.c"/* Calling convention: * comp_wfac(g,a,M); */void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { int L, R, a, M, N, c, d, p, q,h_a,h_m; double *g_combined, *gf_combined; double *g_r,*g_i,*gf_r,*gf_i; int ii; /* Get matrix dimensions.*/ L = mxGetM(prhs[0]); R = mxGetN(prhs[0]); a=(int)mxGetScalar(prhs[1]); M=(int)mxGetScalar(prhs[2]); N=L/a; c=gcd(a, M,&h_a, &h_m); p=a/c; q=M/c; d=N/q; /* Create temporary matrices to convert to correct complex layout. */ g_combined=mxCalloc(L*R*2,sizeof(double)); gf_combined=mxCalloc(L*R*2,sizeof(double)); /* Copy the data. */ g_r=mxGetPr(prhs[0]); for (ii=0;ii<L*R; ii++) { g_combined[2*ii]=g_r[ii]; } if (mxIsComplex(prhs[0])) { g_i=mxGetPi(prhs[0]); for (ii=0;ii<L*R; ii++) { g_combined[2*ii+1]=g_i[ii]; } } wfac((ltfat_complex*)g_combined, L, R, a, M, (ltfat_complex*)gf_combined); plhs[0] = mxCreateDoubleMatrix(p*q*R, c*d, mxCOMPLEX); gf_r=mxGetPr(plhs[0]); gf_i=mxGetPi(plhs[0]); for (ii=0;ii<L*R; ii++) { gf_r[ii]=gf_combined[2*ii]; gf_i[ii]=gf_combined[2*ii+1]; } mxFree(g_combined); mxFree(gf_combined); return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -