Info
This question is closed. Reopen it to edit or answer.
Converting Matlab to C Code
3 views (last 30 days)
Show older comments
The following code is the Matlab version which works perfectly:
Starting=[1 1 -1];
options=optimset('Display','iter');
Estimates=fminsearch(@myfit,Starting,options,t_d,Data)
function sse=myfit(params,Input,Actual_Output)
a=params(1);
b=params(2);
c=params(3);
Calling the Function:
Fitted_Curve = (1/(a*b))*(c-asinh(sinh(c)*exp(a*Input*2*pi)));
Error_Vector=Actual_Output-Fitted_Curve ;
sse=sum(Error_Vector.^2);
I have tried to replicate the function in C which looks like this:
static double function(int n, double x[])
{
double c;
double Fitted_Curve[5];
double Error_Vector[5];
int i;
double a, b, sum = 0;
double v1[5], v2[5], geom_inv[5], norm = 0, norm_2 = 0, v2sum = 0, x_coeff = 0;
// Actual_Output[5] = {1.2, 2.693, 4.325, 6.131, 8.125};
a = x[0];
b=x[1];
c=x[2];
for (i = 0; i <= 4; i++)
{
Fitted_Curve[i] = (1/(a*b))*(c-asinh(sinh(c)*exp(a*Input[i]*2*pi)));
Error_Vector[i] = Actual_Output[i]-Fitted_Curve[i];
}
for (i = 0; i <= 4; i++)
{
sum = sum + Error_Vector[i]*Error_Vector[i];
}
printf("sum = %f\n", sum);
a_global = a;
b_global = b;
// x_coeff_global = x_coeff;
return sum;
}
It runs but doesnt get the same result as the Matlab. The matlab is right, I know that, but the C doesnt get close enough
0 Comments
Answers (1)
This question is closed.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!