From cc2515f22b9684594b895f35f5fbf117dee738cf Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Tue, 27 Oct 2015 09:39:02 +0100 Subject: [PATCH] move regression code from statistics to regression folder --- {statistics => regression}/code/boltzmann.m | 0 .../code/create_linear_data.m | 0 .../code/estimate_regression.m | 0 {statistics => regression}/code/exponential.m | 0 statistics/code/lsq_gradient_sigmoid.m | 9 ---- statistics/code/lsq_sigmoid_error.m | 8 ---- statistics/code/sigmoidal_gradient_descent.m | 44 ------------------- 7 files changed, 61 deletions(-) rename {statistics => regression}/code/boltzmann.m (100%) rename {statistics => regression}/code/create_linear_data.m (100%) rename {statistics => regression}/code/estimate_regression.m (100%) rename {statistics => regression}/code/exponential.m (100%) delete mode 100644 statistics/code/lsq_gradient_sigmoid.m delete mode 100644 statistics/code/lsq_sigmoid_error.m delete mode 100644 statistics/code/sigmoidal_gradient_descent.m diff --git a/statistics/code/boltzmann.m b/regression/code/boltzmann.m similarity index 100% rename from statistics/code/boltzmann.m rename to regression/code/boltzmann.m diff --git a/statistics/code/create_linear_data.m b/regression/code/create_linear_data.m similarity index 100% rename from statistics/code/create_linear_data.m rename to regression/code/create_linear_data.m diff --git a/statistics/code/estimate_regression.m b/regression/code/estimate_regression.m similarity index 100% rename from statistics/code/estimate_regression.m rename to regression/code/estimate_regression.m diff --git a/statistics/code/exponential.m b/regression/code/exponential.m similarity index 100% rename from statistics/code/exponential.m rename to regression/code/exponential.m diff --git a/statistics/code/lsq_gradient_sigmoid.m b/statistics/code/lsq_gradient_sigmoid.m deleted file mode 100644 index 05e9721..0000000 --- a/statistics/code/lsq_gradient_sigmoid.m +++ /dev/null @@ -1,9 +0,0 @@ -function gradient = lsq_gradient_sigmoid(parameter, x, y) -h = 1e-6; - -gradient = zeros(size(parameter)); -for i = 1:length(parameter) - parameter_h = parameter; - parameter_h(i) = parameter_h(i) + h; - gradient(i) = (lsq_sigmoid_error(parameter_h, x, y) - lsq_sigmoid_error(parameter, x, y)) / h; -end \ No newline at end of file diff --git a/statistics/code/lsq_sigmoid_error.m b/statistics/code/lsq_sigmoid_error.m deleted file mode 100644 index 5f05f21..0000000 --- a/statistics/code/lsq_sigmoid_error.m +++ /dev/null @@ -1,8 +0,0 @@ -function error = lsq_sigmoid_error(parameter, x, y) -% p(1) the amplitude -% p(2) the slope -% p(3) the x-shift -% p(4) the y-shift - -y_est = parameter(1)./(1+ exp(-parameter(2) .* (x - parameter(3)))) + parameter(4); -error = mean((y_est - y).^2); \ No newline at end of file diff --git a/statistics/code/sigmoidal_gradient_descent.m b/statistics/code/sigmoidal_gradient_descent.m deleted file mode 100644 index 9763f5a..0000000 --- a/statistics/code/sigmoidal_gradient_descent.m +++ /dev/null @@ -1,44 +0,0 @@ - - -%% fit the sigmoid - -clear -close all - -load('iv_curve.mat') - -figure() -plot(voltage, current, 'o') -xlabel('voltate [mV]') -ylabel('current [pA]') - -% amplitude, slope, x-shift, y-shift -%parameter = [10 0.25 -50, 2.5]; -parameter = [20 0.5 -50, 2.5]; - -eps = 0.1; -% do the descent -gradient = []; -steps = 0; -error = []; - -while isempty(gradient) || norm(gradient) > 0.01 - steps = steps + 1; - gradient = lsq_gradient_sigmoid(parameter, voltage, current); - error(steps) = lsq_sigmoid_error(parameter, voltage, current); - parameter = parameter - eps .* gradient; -end -plot(1:steps, error) - -disp('gradient descent done!') -disp(strcat('final position: ', num2str(parameter))) -disp(strcat('final error: ', num2str(error(end)))) - -%% use fminsearch -parameter = [10 0.5 -50, 2.5]; - -objective_function = @(p)lsq_sigmoid_error(p, voltage, current); -param = fminunc(objective_function, parameter); -disp(param) -param1 = fminsearch(objective_function, parameter); -disp(param1)