#include <util.h>


Public Member Functions | |
| FakeKaiserBessel (float alpha, int K, float r_, float v_, int N_, float vtable_=0.f, int ntable_=5999) | |
| float | sinhwin (float x) const |
| Kaiser-Bessel Sinh window function. | |
| float | i0win (float x) const |
| Kaiser-Bessel I0 window function. | |
| void | build_I0table () |
| 2*pi*alpha*r*vadjust | |
Definition at line 346 of file util.h.
| EMAN::Util::FakeKaiserBessel::FakeKaiserBessel | ( | float | alpha, | |
| int | K, | |||
| float | r_, | |||
| float | v_, | |||
| int | N_, | |||
| float | vtable_ = 0.f, |
|||
| int | ntable_ = 5999 | |||
| ) | [inline] |
| float Util::FakeKaiserBessel::sinhwin | ( | float | x | ) | const [virtual] |
Kaiser-Bessel Sinh window function.
Reimplemented from EMAN::Util::KaiserBessel.
Definition at line 2105 of file util_sparx.cpp.
References EMAN::Util::KaiserBessel::alphar, EMAN::Util::KaiserBessel::fac, and sqrt().
02105 { 02106 float val0 = sinh(fac)/fac; 02107 float absx = fabs(x); 02108 if (0.0 == x) { 02109 float res = 1.0f; 02110 return res; 02111 } else if (absx == alphar) { 02112 return 1.0f/val0; 02113 } else if (absx < alphar) { 02114 float rt = sqrt(1.0f - pow((x/alphar), 2)); 02115 float facrt = fac*rt; 02116 float res = (sinh(facrt)/facrt)/val0; 02117 return res; 02118 } else { 02119 float rt = sqrt(pow((x/alphar),2) - 1.f); 02120 float facrt = fac*rt; 02121 float res = (sin(facrt)/facrt)/val0; 02122 return res; 02123 } 02124 }
| float Util::FakeKaiserBessel::i0win | ( | float | x | ) | const [virtual] |
Kaiser-Bessel I0 window function.
Reimplemented from EMAN::Util::KaiserBessel.
Definition at line 2079 of file util_sparx.cpp.
References EMAN::Util::KaiserBessel::facadj, sqrt(), and EMAN::Util::KaiserBessel::vadjust.
02079 { 02080 float val0 = sqrt(facadj)*float(gsl_sf_bessel_I1(facadj)); 02081 float absx = fabs(x); 02082 if (absx > vadjust) return 0.f; 02083 float rt = sqrt(1.f - pow(absx/vadjust, 2)); 02084 float res = sqrt(facadj*rt)*float(gsl_sf_bessel_I1(facadj*rt))/val0; 02085 return res; 02086 }
| void Util::FakeKaiserBessel::build_I0table | ( | ) | [virtual] |
2*pi*alpha*r*vadjust
Reimplemented from EMAN::Util::KaiserBessel.
Definition at line 2088 of file util_sparx.cpp.
References EMAN::Util::KaiserBessel::facadj, EMAN::Util::KaiserBessel::fltb, EMAN::Util::KaiserBessel::i0table, EMAN::Util::KaiserBessel::K, EMAN::Util::KaiserBessel::N, EMAN::Util::KaiserBessel::ntable, EMAN::Util::round(), sqrt(), and EMAN::Util::KaiserBessel::vadjust.
02088 { 02089 i0table.resize(ntable+1); // i0table[0:ntable] 02090 int ltab = int(round(float(ntable)/1.1f)); 02091 fltb = float(ltab)/(K/2); 02092 float val0 = sqrt(facadj)*static_cast<float>(gsl_sf_bessel_I1(facadj)); 02093 for (int i=ltab+1; i <= ntable; i++) i0table[i] = 0.f; 02094 for (int i=0; i <= ltab; i++) { 02095 float s = float(i)/fltb/N; 02096 if (s < vadjust) { 02097 float rt = sqrt(1.f - pow(s/vadjust, 2)); 02098 i0table[i] = sqrt(facadj*rt)*static_cast<float>(gsl_sf_bessel_I1(facadj*rt))/val0; 02099 } else { 02100 i0table[i] = 0.f; 02101 } 02102 } 02103 }
1.5.6