📄 comp_cantight_fac.c
字号:
#include "mex.h"#include "config.h"#include "../src/ltfat_blas.c"#include "../src/ltfat_lapack.c"#include "../src/cantight_fac.c"#include "../src/gcd.c"/* Calling convention: * comp_cantight_fac(gf,L,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 *gf_combined, *gtightf_combined; double *gf_r,*gf_i,*gtightf_r,*gtightf_i; int ii; /* Get matrix dimensions.*/ L=(int)mxGetScalar(prhs[1]); a=(int)mxGetScalar(prhs[2]); M=(int)mxGetScalar(prhs[3]); R = mxGetM(prhs[0])*mxGetN(prhs[0])/L; 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. */ gf_combined = mxCalloc(L*R,2*sizeof(double)); gtightf_combined = mxCalloc(L*R,2*sizeof(double)); /* Copy the data. */ gf_r=mxGetPr(prhs[0]); for (ii=0;ii<L*R; ii++) { gf_combined[2*ii]=gf_r[ii]; } if (mxIsComplex(prhs[0])) { gf_i=mxGetPi(prhs[0]); for (ii=0;ii<L*R; ii++) { gf_combined[2*ii+1]=gf_i[ii]; } } cantight_fac((ltfat_complex*)gf_combined,L,R,a,M, (ltfat_complex*)gtightf_combined); plhs[0] = mxCreateDoubleMatrix(p*q*R, c*d, mxCOMPLEX); gtightf_r=mxGetPr(plhs[0]); gtightf_i=mxGetPi(plhs[0]); for (ii=0;ii<L*R; ii++) { gtightf_r[ii]=gtightf_combined[2*ii]; gtightf_i[ii]=gtightf_combined[2*ii+1]; } mxFree(gf_combined); mxFree(gtightf_combined); return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -