static const struct linop_s* sense_nc_init(const long max_dims[DIMS], const long map_dims[DIMS], const complex float* maps, const long ksp_dims[DIMS], const long traj_dims[DIMS], const complex float* traj, struct nufft_conf_s conf, _Bool use_gpu) { long coilim_dims[DIMS]; long img_dims[DIMS]; md_select_dims(DIMS, ~MAPS_FLAG, coilim_dims, max_dims); md_select_dims(DIMS, ~COIL_FLAG, img_dims, max_dims); const struct linop_s* fft_op = nufft_create(DIMS, ksp_dims, coilim_dims, traj_dims, traj, NULL, conf, use_gpu); const struct linop_s* maps_op = maps2_create(coilim_dims, map_dims, img_dims, maps, use_gpu); const struct linop_s* lop = linop_chain(maps_op, fft_op); linop_free(maps_op); linop_free(fft_op); return lop; }
static const struct linop_s* sense_nc_init(const long max_dims[DIMS], const long map_dims[DIMS], const complex float* maps, const long ksp_dims[DIMS], const long traj_dims[DIMS], const complex float* traj, struct nufft_conf_s conf, struct operator_s** precond_op) { long coilim_dims[DIMS]; long img_dims[DIMS]; md_select_dims(DIMS, ~MAPS_FLAG, coilim_dims, max_dims); md_select_dims(DIMS, ~COIL_FLAG, img_dims, max_dims); const struct linop_s* fft_op = nufft_create(DIMS, ksp_dims, coilim_dims, traj_dims, traj, NULL, conf); const struct linop_s* maps_op = maps2_create(coilim_dims, map_dims, img_dims, maps); //precond_op[0] = (struct operator_s*) nufft_precond_create( fft_op ); precond_op[0] = NULL; const struct linop_s* lop = linop_chain(maps_op, fft_op); linop_free(maps_op); linop_free(fft_op); return lop; }