diff options
author | Chayan Bhawal | 2018-09-28 11:07:55 +0530 |
---|---|---|
committer | Chayan Bhawal | 2018-09-28 11:07:55 +0530 |
commit | 20c792454b7757064cb5ced103357bfed42d9b1a (patch) | |
tree | 827e0b685bd8c06fcf4d131b56763af5738d3407 /Tutorial3_Curve_fitting/Scilab_code | |
parent | f91b28ce516ae287fbaac390cde07c7f7a9aca97 (diff) | |
download | scilab-tutorials-20c792454b7757064cb5ced103357bfed42d9b1a.tar.gz scilab-tutorials-20c792454b7757064cb5ced103357bfed42d9b1a.tar.bz2 scilab-tutorials-20c792454b7757064cb5ced103357bfed42d9b1a.zip |
Tutorial3_data_fit
Diffstat (limited to 'Tutorial3_Curve_fitting/Scilab_code')
-rw-r--r-- | Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce | 38 | ||||
-rw-r--r-- | Tutorial3_Curve_fitting/Scilab_code/errorfun.sci | 4 | ||||
-rw-r--r-- | Tutorial3_Curve_fitting/Scilab_code/fit_function.sci | 6 |
3 files changed, 48 insertions, 0 deletions
diff --git a/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce b/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce new file mode 100644 index 0000000..57ba922 --- /dev/null +++ b/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce @@ -0,0 +1,38 @@ +//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); + +// weights for data fitting +weight_matrix = ones(length(time),1); +//weight_matrix = [2 2 2 2 1 1 1 1 -3 -3 -3 1 1]'; + + +// 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(errorfun,time,measured_data,weight_matrix),initial_condition) + +error = errorfun(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/Tutorial3_Curve_fitting/Scilab_code/errorfun.sci b/Tutorial3_Curve_fitting/Scilab_code/errorfun.sci new file mode 100644 index 0000000..0b93304 --- /dev/null +++ b/Tutorial3_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, weight_matrix) + err = weight_matrix.*(fit_function(time, x) - measured_data ) +endfunction diff --git a/Tutorial3_Curve_fitting/Scilab_code/fit_function.sci b/Tutorial3_Curve_fitting/Scilab_code/fit_function.sci new file mode 100644 index 0000000..49240e8 --- /dev/null +++ b/Tutorial3_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 |