diff options
-rw-r--r-- | Tutorial1_Basic/Data/Tut1_data2.dat | 15 | ||||
-rw-r--r-- | Tutorial1_Basic/Scilab_code/Tutotial1_filehandling.sce | 7 | ||||
-rw-r--r-- | Tutorial3_Curve_fitting/Data/Tut3_Data.csv | 13 | ||||
-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 |
6 files changed, 82 insertions, 1 deletions
diff --git a/Tutorial1_Basic/Data/Tut1_data2.dat b/Tutorial1_Basic/Data/Tut1_data2.dat new file mode 100644 index 0000000..8d79fe3 --- /dev/null +++ b/Tutorial1_Basic/Data/Tut1_data2.dat @@ -0,0 +1,15 @@ +#Obtained from a dummy data for illustration in https://docs.google.com/spreadsheets/d/1mIbdSO35zmm4SJcIXE89_-sk_ZBsB1qKnhiLdgY_-FE/edit#gid=0 +#Grinv Nuexpt err +0.001 17.52228506 0.5 +0.002511886432 15.39548247 0.5 +0.006309573445 10.72315424 0.5 +0.01 7.490637629 0.5 +0.02511886432 7.573613426 0.5 +0.06309573445 6.521758867 0.5 +0.1 4.85299648 0.5 +0.2511886432 5.179305259 0.5 +0.6309573445 4.544433719 0.5 +1 5.009578782 0.5 +2.511886432 5.126719895 0.5 +6.309573445 4.478903266 0.5 +10 5.431082153 0.5 diff --git a/Tutorial1_Basic/Scilab_code/Tutotial1_filehandling.sce b/Tutorial1_Basic/Scilab_code/Tutotial1_filehandling.sce index da9279a..a429533 100644 --- a/Tutorial1_Basic/Scilab_code/Tutotial1_filehandling.sce +++ b/Tutorial1_Basic/Scilab_code/Tutotial1_filehandling.sce @@ -6,7 +6,7 @@ clc exec mymean.sci; exec mystdev.sci; -//Import data from file +//Import data from csv file Data = csvRead('/home/chayan/Documents/scilab-tutorials/Tutorial1/Data/Tut1_data1.csv'); x = Data(:,1); y = Data(:,2); @@ -22,3 +22,8 @@ standard_deviation_of_Data_x= mystdev(x,mean_of_Data_x); //Display mean and standard deviation in command window disp(mean_of_Data_x,'Mean of x',standard_deviation_of_Data_x,'Standard deviation of x') + +//Importing data from dat file +Mat = fscanfMat('Data/Tut1_data2.dat'); +disp(Mat,'Data in the file'); + diff --git a/Tutorial3_Curve_fitting/Data/Tut3_Data.csv b/Tutorial3_Curve_fitting/Data/Tut3_Data.csv new file mode 100644 index 0000000..fdaefcc --- /dev/null +++ b/Tutorial3_Curve_fitting/Data/Tut3_Data.csv @@ -0,0 +1,13 @@ +1,0.53916873238049445 +2,0.17798153799600328 +3,0.12207292040943035 +4,0.083177346548027525 +5,0.055253064762310761 +6,0.027227945666794384 +7,0.075642331036411825 +8,0.044912538844899041 +9,0.078845397608171469 +10,0.058759243199075772 +11,0.034198514001116481 +12,0.069646888441571811 +13,0.012750355494905292 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 |