Xmipp  v3.23.11-Nereus
Functions
volume_halves_restoration.cpp File Reference
#include "volume_halves_restoration.h"
#include <data/numerical_tools.h>
Include dependency graph for volume_halves_restoration.cpp:

Go to the source code of this file.

Functions

double restorationSigmaCost (double *x, void *_prm)
 

Function Documentation

◆ restorationSigmaCost()

double restorationSigmaCost ( double *  x,
void *  _prm 
)

Definition at line 292 of file volume_halves_restoration.cpp.

293 {
294  auto *prm=(ProgVolumeHalvesRestoration *) _prm;
295  double sigma1=x[1];
296  double sigma2=x[2];
297  if (sigma1<0 || sigma2<0 || sigma1>2 || sigma2>2)
298  return 1e38;
299  double K1=-0.5/(sigma1*sigma1);
300  double K2=-0.5/(sigma2*sigma2);
301  double error=0;
302  double N=0;
303  const MultidimArray< std::complex<double> > &fV=prm->fVol;
304  const MultidimArray< std::complex<double> > &fV1r=prm->fV1r;
305  const MultidimArray< std::complex<double> > &fV2r=prm->fV2r;
306  const MultidimArray<double> &R2=prm->R2;
308  {
309  double R2n=DIRECT_MULTIDIM_ELEM(R2,n);
310  if (R2n<=0.25)
311  {
312  double H1=exp(K1*R2n);
313  double H2=exp(K2*R2n);
314  error+=abs(DIRECT_MULTIDIM_ELEM(fV,n)*H1-DIRECT_MULTIDIM_ELEM(fV1r,n))+
316  N++;
317  }
318  }
319  return error;
320 }
void abs(Image< double > &op)
doublereal * x
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
#define DIRECT_MULTIDIM_ELEM(v, n)
void error(char *s)
Definition: tools.cpp:107
ProgClassifyCL2D * prm
int * n