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