I want do fit data with a sinus fit. I found an algorithm, unfortunately I do not see how to give the data to the algorithm.
Does anybody has an ide how to solve this?


Thanks for help..



float * datax = new float[numOfData]; float * datay = new float[numOfData];
float * dataz = new float[numOfData]; float phase(0); float mag(0);

for(int i=0;i // fill data

float a(0); float b(0); float c(0); float p[3] = {0}; // product of fitting equation float XiYi(0); float XiZi(0); float YiZi(0); float XiXi(0); float YiYi(0); float Xi(0); float Yi(0); float Zi(0); for(int i=0;i


float A[3][3];
float B[3][3];
float C[3][3];
float X[3][3];
int i;
int j;
float x = 0;
float n = 0; //n is the determinant of A

A[0][0] = XiXi;
A[0][1] = XiYi;
A[0][2] = Xi;
A[1][0] = XiYi;
A[1][1] = YiYi;
A[1][2] = Yi;
A[2][0] = Xi;
A[2][1] = Yi;
A[2][2] = numOfData;

for( i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
B[i][j] = 0;
C[i][j] = 0;
}
}

for( i=0, j=0;j<3;j++)
{
if(j == 2)
{
n += A[i][j] * A[i+1][0] * A[i+2][1];
}
else if(j == 1)
{
n += A[i][j] * A[i+1][j+1] * A[i+2][0];
}
else
{
n += A[i][j] * A[i+1][j+1] * A[i+2][j+2];
}
}

for( i=2, j=0;j<3;j++)
{
if(j == 2)
{
n -= A[i][j] * A[i-1][0] * A[i-2][1];
}
else if(j == 1)
{
n -= A[i][j] * A[i-1][j+1] * A[i-2][0];
}
else
{
n -= A[i][j]*A[i-1][j+1]*A[i-2][j+2];
}
}

// Check determinant n of matrix A
if (n)
{
x = 1.0/n;

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
B[i][j] = A[j][i];
}
}

C[0][0] = (B[1][1] * B[2][2]) - (B[2][1] * B[1][2]);
C[0][1] = ((B[1][0] * B[2][2]) - (B[2][0] * B[1][2])) * (-1);
C[0][2] = (B[1][0] * B[2][1]) - (B[2][0] * B[1][1]);

C[1][0] = ((B[0][1] * B[2][2]) - (B[2][1] * B[0][2])) * (-1);
C[1][1] = (B[0][0] * B[2][2]) - (B[2][0] * B[0][2]);
C[1][2] = ((B[0][0] * B[2][1]) - (B[2][0] * B[0][1])) * (-1);

C[2][0] = (B[0][1] * B[1][2]) - (B[1][1] * B[0][2]);
C[2][1] = ((B[0][0] * B[1][2]) - (B[1][0] * B[0][2])) * (-1);
C[2][2] = (B[0][0] * B[1][1]) - (B[1][0] * B[0][1]);

for( i=0;i<3;i++)
{
for( j=0;j<3;j++)
{
X[i][j] = C[i][j] * x;
}
}

p[0] = XiZi;
p[1] = YiZi;
p[2] = Zi;

a = X[0][0] * p[0] + X[0][1] * p[1] + X[0][2] * p[2];
b = X[1][0] * p[0] + X[1][1] * p[1] + X[1][2] * p[2];
c = X[2][0] * p[0] + X[2][1] * p[1] + X[2][2] * p[2];
}
else // determinant=0
{
a = 1;
b = 1;
c = 0;
}
mag = sqrt(a*a + b*b);