From 6d39446c434cfcca02ae7a4551e2d66edf9def7f Mon Sep 17 00:00:00 2001 From: P Sunthar Date: Tue, 2 Oct 2018 00:09:14 +0530 Subject: Renamed dirs --- Tutorial03-Curve_fitting/Scilab_code/README.md | 1 + .../Scilab_code/Tutorial3_curve_fitting.sce | 33 +++++++++++++++++++ .../Tutorial3_curve_fitting_weighted.sce | 37 ++++++++++++++++++++++ Tutorial03-Curve_fitting/Scilab_code/errorfun.sci | 4 +++ .../Scilab_code/errorfunweight.sci | 4 +++ .../Scilab_code/fit_function.sci | 6 ++++ 6 files changed, 85 insertions(+) create mode 100644 Tutorial03-Curve_fitting/Scilab_code/README.md create mode 100644 Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce create mode 100644 Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting_weighted.sce create mode 100644 Tutorial03-Curve_fitting/Scilab_code/errorfun.sci create mode 100644 Tutorial03-Curve_fitting/Scilab_code/errorfunweight.sci create mode 100644 Tutorial03-Curve_fitting/Scilab_code/fit_function.sci (limited to 'Tutorial03-Curve_fitting/Scilab_code') diff --git a/Tutorial03-Curve_fitting/Scilab_code/README.md b/Tutorial03-Curve_fitting/Scilab_code/README.md new file mode 100644 index 0000000..37230ff --- /dev/null +++ b/Tutorial03-Curve_fitting/Scilab_code/README.md @@ -0,0 +1 @@ +# Scilab code for curve fitting diff --git a/Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce b/Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce new file mode 100644 index 0000000..43e34db --- /dev/null +++ b/Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce @@ -0,0 +1,33 @@ +//This function is for curve fitting using least-square + +clear +clc + +//The function to be fitted +exec fit_function.sci; +//The error function +exec errorfun.sci; + +//Read measured data +Data = csvRead('/home/chayan/Documents/scilab-tutorials/Tutorial3_Curve_fitting/Data/Tut3_Data.csv') +//Time stamp +time = Data(:,1); +//Measured output +measured_data = Data(:,2); + +// initial parameters guess +initial_condition = [1 ; 1]; + +//Call least square function, +//Output is function value (func_value_xopt) at optimal coefficients (x_optimal)) +[func_value_xopt,coeff_optimal] = leastsq(list(errorfun,time,measured_data),initial_condition) + +error = errorfun(coeff_optimal,time,measured_data) +disp(error,'The error after least square approximation') + + +// Plot of measured data and fitted data versus time +fitted_data = fit_function(time, coeff_optimal); +plot2d(time, [measured_data,fitted_data], [-1,2]) +legend(["measure points", "fitted curve"],[-1,2],"ur"); +xtitle("a simple fit with leastsq","time","data") diff --git a/Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting_weighted.sce b/Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting_weighted.sce new file mode 100644 index 0000000..866a070 --- /dev/null +++ b/Tutorial03-Curve_fitting/Scilab_code/Tutorial3_curve_fitting_weighted.sce @@ -0,0 +1,37 @@ +//This function is for curve fitting using least-square + +clear +clc + +//The function to be fitted +exec fit_function.sci; +//The error function +exec errorfunweight.sci; + +//Read measured data +Data = csvRead('/home/chayan/Documents/scilab-tutorials/Tutorial3_Curve_fitting/Data/Tut3_Data.csv') +//Time stamp +time = Data(:,1); +//Measured output +measured_data = Data(:,2); + +// weights for data fitting +weight_matrix = [1 1 1 1 1 1 5 5 5 5 5 5 5]'; + + +// minimize f(x) = sum_i weight_matrix(i)^2 (weight_matrix(tm(i),a,b) - measured_data(i))^2 +// initial parameters guess +initial_condition = [1 ; 1]; + +//f is the function value at optimal x (xopt) +[func_value_xopt,x_optimal] = leastsq(list(errorfunweight,time,measured_data,weight_matrix),initial_condition) + +error = errorfunweight(x_optimal,time,measured_data,weight_matrix) +disp(error,'The error after least square approximation') + + +// a small graphic +fitted_data = fit_function(time, x_optimal); +plot2d(time, [measured_data,fitted_data], [-1,2]) +legend(["measure points", "fitted curve"],[-1,2],"ur"); +xtitle("a simple fit with leastsq","time","data") diff --git a/Tutorial03-Curve_fitting/Scilab_code/errorfun.sci b/Tutorial03-Curve_fitting/Scilab_code/errorfun.sci new file mode 100644 index 0000000..741ad63 --- /dev/null +++ b/Tutorial03-Curve_fitting/Scilab_code/errorfun.sci @@ -0,0 +1,4 @@ +//A function to compute error between computed data and measured data +function err = errorfun(x, time, measured_data) + err = (fit_function(time, x) - measured_data ) +endfunction diff --git a/Tutorial03-Curve_fitting/Scilab_code/errorfunweight.sci b/Tutorial03-Curve_fitting/Scilab_code/errorfunweight.sci new file mode 100644 index 0000000..9326d91 --- /dev/null +++ b/Tutorial03-Curve_fitting/Scilab_code/errorfunweight.sci @@ -0,0 +1,4 @@ +//A function to compute error between computed data and measured data +function err = errorfunweight(x, time, measured_data, weight_matrix) + err = weight_matrix.*(fit_function(time, x) - measured_data ) +endfunction diff --git a/Tutorial03-Curve_fitting/Scilab_code/fit_function.sci b/Tutorial03-Curve_fitting/Scilab_code/fit_function.sci new file mode 100644 index 0000000..49240e8 --- /dev/null +++ b/Tutorial03-Curve_fitting/Scilab_code/fit_function.sci @@ -0,0 +1,6 @@ +//The function to be fitted in the measured data +function y = fit_function(t, x) + a = x(1); + b = x(2); + y = a./(1+b.*t.*t) +endfunction -- cgit