Global fitting with one shared paramenter
Show older comments
Hello all,
First I would apologize for the code. I am sure there are smarter ways to write it but I am pretty new in matlab and programming syntax.
I am struggling to write nonlinear model to fit several data sets simultaneously. In particular I need to global fit some experimental data and one of these (b(3) in the following code ) is shared among them. I went throw the previous dscussion on the topic but I could not correct my code. My problem is that I did not undertand how to specify that the parameters for the fitting [b(1) and b(2)] can be different among the 4 dataset and b(3) is the same in order to plot them finally.
The function I need to use for the globla fitting is the same as my model function
I upload here the excell data I was using to test the script
Thank you in advance, Fil.
%----- Model function for 1:1 binding -------
modelfun = @(b,x)b(1)*(b(2)+x+b(3)-sqrt((b(2)+x+b(3)).^2-4*b(2)*x))./(2*b(2));
modelfun = @(b,x) modelfun([b(1),30,b(3)],x) %fixing parameters
b0 = [1; 30; 20]; %initialize parameters
% b(1) = maximum asintot
% b(2) = P0: total protein concentration
% b(3) = kd value
input = 'Global_fitting'; %take excel file as input
sheet = 1;
xlrange= 'A2:H11'; %data range
data=xlsread(input,sheet,xlrange);
[nr,nc]=size(data); % size of the data: nc [number of columns], nr[number of rows]'
x= data(:,1); % data x
for i = 1:nc % prepare y data
if (rem(i,2)==0)
y(:,i) = data (:,i);
y( :, all(~y,1) ) = []; % delete zero values columns
end
end
[ry, cy] = size(y); % size of the data: cy [number of columns], ry[number of rows]'
output_params = zeros (3,4);
for n= 1:cy
output_params(:,n)=lsqcurvefit(modelfun, b0, x,y(:,n)); % first independent fit of the (x,y) dataset
end
output_param0 = output_params % output parameters of the fitting
%---- global fitting ------
Fitting = @(params,x) modelfun([params(1:4),params(3)], x)
params0 = output_param0
for n= 1:cy
m = lsqcurvefit(Fitting,params0,x,y(:,n))
end
plot (x,y, 'o')
hold on
Accepted Answer
More Answers (0)
Categories
Find more on Linear Predictive Coding in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!