summaryrefslogtreecommitdiff
path: root/Tutorial3_Curve_fitting/Scilab_code
diff options
context:
space:
mode:
authorChayan Bhawal2018-10-01 03:21:11 +0530
committerChayan Bhawal2018-10-01 03:21:11 +0530
commitd70da5e732149071f715e080407aa5c74e3da44a (patch)
treeab5273a19f600fde8406eb7ad8431196dd8b39ff /Tutorial3_Curve_fitting/Scilab_code
parent20c792454b7757064cb5ced103357bfed42d9b1a (diff)
downloadscilab-tutorials-d70da5e732149071f715e080407aa5c74e3da44a.tar.gz
scilab-tutorials-d70da5e732149071f715e080407aa5c74e3da44a.tar.bz2
scilab-tutorials-d70da5e732149071f715e080407aa5c74e3da44a.zip
Problems_updated
Diffstat (limited to 'Tutorial3_Curve_fitting/Scilab_code')
-rw-r--r--Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce17
-rw-r--r--Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting_weighted.sce37
-rw-r--r--Tutorial3_Curve_fitting/Scilab_code/errorfun.sci4
-rw-r--r--Tutorial3_Curve_fitting/Scilab_code/errorfunweight.sci4
4 files changed, 49 insertions, 13 deletions
diff --git a/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce b/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce
index 57ba922..43e34db 100644
--- a/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce
+++ b/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting.sce
@@ -15,24 +15,19 @@ 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)
+//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(x_optimal,time,measured_data,weight_matrix)
+error = errorfun(coeff_optimal,time,measured_data)
disp(error,'The error after least square approximation')
-// a small graphic
-fitted_data = fit_function(time, x_optimal);
+// 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/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting_weighted.sce b/Tutorial3_Curve_fitting/Scilab_code/Tutorial3_curve_fitting_weighted.sce
new file mode 100644
index 0000000..866a070
--- /dev/null
+++ b/Tutorial3_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/Tutorial3_Curve_fitting/Scilab_code/errorfun.sci b/Tutorial3_Curve_fitting/Scilab_code/errorfun.sci
index 0b93304..741ad63 100644
--- a/Tutorial3_Curve_fitting/Scilab_code/errorfun.sci
+++ b/Tutorial3_Curve_fitting/Scilab_code/errorfun.sci
@@ -1,4 +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 )
+function err = errorfun(x, time, measured_data)
+ err = (fit_function(time, x) - measured_data )
endfunction
diff --git a/Tutorial3_Curve_fitting/Scilab_code/errorfunweight.sci b/Tutorial3_Curve_fitting/Scilab_code/errorfunweight.sci
new file mode 100644
index 0000000..9326d91
--- /dev/null
+++ b/Tutorial3_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