8 FUNCTION_OBJECT_IMP(FourierFit)
11 FourierFit::FourierFit(
unsigned int N):
14 for (
unsigned int i=0;i<N;i++) {
15 std::ostringstream stream;
16 stream <<
"Fraction " << i;
17 fraction.push_back(
new Parameter(stream.str(), 0.5, 0.0, 1.0));
19 for (
unsigned int i=0;i<N;i++) {
20 std::ostringstream stream;
21 stream <<
"Phase " << i;
22 phase.push_back(
new Parameter(stream.str(), M_PI, 0.0, 2.0*M_PI));
27 FourierFit::~FourierFit() {
28 for (
unsigned int i=0;i<N;i++) {
35 FourierFit::FourierFit(
const FourierFit & right):
38 for (
int i=0;i<N;i++) {
39 fraction.push_back(
new Parameter(*right.fraction[i]));
40 phase.push_back(
new Parameter(*right.phase[i]));
45 double FourierFit::operator() (
double x)
const {
48 std::complex<double> P=0.0;
49 std::complex<double> I(0,1.0);
54 double Pn=sqrt(1/2.0/M_PI);
60 double fn=getFraction(n-1)->getValue();
61 double px=getPhase(n-1)->getValue();
62 double Pn=sqrt(1/M_PI)*sin(n*x/2.0);
63 P+=exp(I*px)*sqrt(f*fn)*Pn;
71 unsigned int FourierFit::order()
const{
75 Parameter *FourierFit::getFraction(
unsigned int i) {
79 const Parameter *FourierFit::getFraction(
unsigned int i)
const{
83 Parameter *FourierFit::getPhase(
unsigned int i) {
87 const Parameter *FourierFit::getPhase(
unsigned int i)
const{