Curve fitting in a for loop?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I haven't tried this before, but I would like to run the code below in a for loop and have all of the data points and fitted curves plotted on the same plot. My data is in matrix form. I have 5 columns with concentrations (Concentration excel file), which should be xdata. There is also a average mortality excel file with 5 columns that have the average mortality, which should be ydata. Each cell in the aveMortality excel file lines up with a cell in the Concentration excel file. So, I would like the for loop to use the first Concentration column with the first column of the aveMortality matrix, and then the second columns, and so on. Then plot the curves as lines, and the xdata and ydata as large dots. Here is my code, and the excel files are attached:
xdata = Concentration;
ydata = aveMortality;
fun = @(x,xdata)(1./(1+(x(1)./xdata).^x(2)));
x0 = [180,1.6];
%x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
opts = optimset('MaxFunEvals',1E+4, 'MaxIter',1E+4 );
x = fminsearch(@(x) norm(ydata - fun(x,xdata)), x0, opts)
figure
hold on
plot(xdata,ydata,'r.','markerszie', 30);
xlim([0 200]);
xlabel('Concentration','FontWeight','bold');
ylim([0 1]);
ylabel('Average Mortality','FontWeight','bold');
box off
y = 0:600;
plot(1./(1+(x(1)./y).^x(2)),'b-','markersize',3)
xlim([0 200])
ylim([0 1])
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Curve Fitting Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!