50 static void window_funct_init(
window_funct_plan* ths,
int m,
int n,
double sigma) {
64 double _Complex *f = (
double _Complex*)
nfft_malloc(that->
M_total*
sizeof(
double _Complex));
65 double _Complex *f_hat = (
double _Complex*)
nfft_malloc(that->
N_total*
sizeof(
double _Complex));
68 window_funct_init(ths,that->plan.
m,that->N3,that->sigma3);
71 that->plan.
f = that->
f;
75 memset(f,0,that->
M_total*
sizeof(
double _Complex));
78 f_hat[j]=that->
f_hat[j];
81 for(l=-ths->n[0]/2;l<=ths->n[0]/2;l++) {
83 that->
f_hat[j]*=cexp(-2*
PI*_Complex_I*that->w[j]*((
double)l))/PHI_HUT(ths->n[0]*that->w[j],0);
87 if(fabs(that->t[j]-((
double)l)/((
double)ths->n[0]))<that->plan.
m/((
double)ths->n[0]))
89 double phi_val = PHI(that->t[j]-((
double)l)/((
double)ths->n[0]),0);
90 f[j]+=that->
f[j]*phi_val;
96 that->
f_hat[j]=f_hat[j];
101 that->plan.
f = that->
f;
111 double _Complex *f = (
double _Complex*)
nfft_malloc(that->
M_total*
sizeof(
double _Complex));
112 double _Complex *f_hat = (
double _Complex*)
nfft_malloc(that->
N_total*
sizeof(
double _Complex));
115 window_funct_init(ths,that->plan.
m,that->N3,that->sigma3);
117 memset(f_hat,0,that->
N_total*
sizeof(
double _Complex));
120 that->plan.
f = that->
f;
130 for(l=-ths->n[0]/2;l<=ths->n[0]/2;l++) {
134 if(fabs(that->t[j]-((
double)l)/((
double)ths->n[0]))<that->plan.
m/((
double)ths->n[0]))
135 that->
f[j]*=PHI(that->t[j]-((
double)l)/((
double)ths->n[0]),0);
139 nfft_adjoint(&that->plan);
141 f_hat[j]+=that->
f_hat[j]*cexp(2*
PI*_Complex_I*that->w[j]*((
double)l));
148 f_hat[j] /= PHI_HUT(ths->n[0]*that->w[j],0);
162 int m,
double sigma,
unsigned nfft_flags,
unsigned fftw_flags) {
164 nfft_init_guru(&ths->plan,2,N,M,n,m,nfft_flags,fftw_flags);
169 ths->
f = ths->plan.
f;
175 ths->
mv_trafo = (void (*) (
void* ))mri_inh_2d1d_trafo;
176 ths->
mv_adjoint = (void (*) (
void* ))mri_inh_2d1d_adjoint;
184 ths->plan.
f = ths->
f;
187 nfft_finalize(&ths->plan);
197 window_funct_init(ths,that->plan.
m,that->N3,that->sigma3);
200 that->plan.
f =that->
f ;
205 for(l=-ths->n[0]/2;l<ths->n[0]/2;l++)
208 if(fabs(that->w[j]-((
double)l)/((
double)ths->n[0]))<ths->m/((
double)ths->n[0]))
209 that->plan.
f_hat[j*ths->n[0]+(l+ths->n[0]/2)]= that->
f_hat[j]*PHI(that->w[j]-((
double)l)/((double)ths->n[0]),0);
211 that->plan.
f_hat[j*ths->n[0]+(l+ths->n[0]/2)]=0.0;
219 that->
f[j] /= PHI_HUT(ths->n[0]*that->plan.
x[3*j+2],0);
229 window_funct_init(ths,that->plan.
m,that->N3,that->sigma3);
232 that->plan.
f =that->
f ;
236 that->
f[j] /= PHI_HUT(ths->n[0]*that->plan.
x[3*j+2],0);
239 nfft_adjoint(&that->plan);
243 for(l=-ths->n[0]/2;l<ths->n[0]/2;l++)
246 if(fabs(that->w[j]-((
double)l)/((
double)ths->n[0]))<ths->m/((
double)ths->n[0]))
247 that->
f_hat[j]+= that->plan.
f_hat[j*ths->n[0]+(l+ths->n[0]/2)]*PHI(that->w[j]-((
double)l)/((double)ths->n[0]),0);
257 int m,
double sigma,
unsigned nfft_flags,
unsigned fftw_flags) {
260 nfft_init_guru(&ths->plan,3,N,M,n,m,nfft_flags,fftw_flags);
263 ths->
f = ths->plan.
f;
267 ths->
mv_trafo = (void (*) (
void* ))mri_inh_3d_trafo;
268 ths->
mv_adjoint = (void (*) (
void* ))mri_inh_3d_adjoint;
274 nfft_finalize(&ths->plan);