fitting data form a matrix using loops
Show older comments
hello,
I made the following chart with averages, error bars and fittings starting from my data set. It took me some time as I am quite new to Matlab, but I know I did it wrong. I should be using loops but I have tried several times with no success.
Can someone please help me to understand it better?
Thank you very much!!!

d=readmatrix("shear_Stress_more.csv");
ctrl = mean(d(:,2:5),2);
pef = mean(d(:,6:9),2);
USa = mean(d(:,10:11),2);
USb = mean(d(:,12:13),2);
enz = mean(d(:,14:17),2);
medie=[ctrl pef USa USb enz];
st_ctrl = std(d(:,2:5),0,2);
st_pef = std(d(:,6:9),0,2);
st_USa = std(d(:,10:11),0,2);
st_USb = std(d(:,12:13),0,2);
st_enz = std(d(:,14:17),0,2);
stdev = [st_ctrl st_pef st_USa st_USb st_enz];
ft = fittype('a+(b-a)*exp(-c*x)', ...
'dependent',{'y'}, ...
'independent',{'x'}, ...
'coefficients',{'a','b','c',});
hold on
[f,gof] = fit(d(:,1),medie(:,1), ft,'StartPoint',[3, 2, 0.01]);
errorbar(d(:,1),medie(:,1),stdev(:,1));
plot(f);
[f2,gof2] = fit(d(:,1),medie(:,2), ft,'StartPoint',[3, 2, 0.01]);
errorbar(d(:,1),medie(:,2),stdev(:,2));
plot(f2);
[f3,gof3] = fit(d(:,1),medie(:,3), ft,'StartPoint',[3, 2, 0.01]);
errorbar(d(:,1),medie(:,3),stdev(:,3));
plot(f3);
[f4,gof4] = fit(d(:,1),medie(:,4), ft,'StartPoint',[3, 2, 0.01]);
errorbar(d(:,1),medie(:,4),stdev(:,4));
plot(f4);
[f5,gof5] = fit(d(:,1),medie(:,5), ft,'StartPoint',[3, 2, 0.01]);
errorbar(d(:,1),medie(:,5),stdev(:,5));
plot(f5);
xlabel({'Time t [s]'});
ylabel({'Shear stress σ [Pa]'});
title({''});
legend('Control','PEF','USa','USb','Enzyme');
hold off
Accepted Answer
More Answers (1)
dpb
on 19 Sep 2022
No real deal...your first part is somewhat more of a pain since you're averaging over a variable number of columns -- if it's a one-time exercise, I'd probably basically leave it along and only deal with it further if have to change these column IDs manuall
d=readmatrix("shear_Stress_more.csv");
% build summary data arrays
davg=[mean(d(:,2:5),2) mean(d(:,6:9),2) mean(d(:,10:11),2) mean(d(:,12:13),2) mean(d(:,14:17),2)];
dstd=[std(d(:,2:5),2) std(d(:,6:9),2) std(d(:,10:11),2) std(d(:,12:13),2) std(d(:,14:17),2)];
ft = fittype('a+(b-a)*exp(-c*x)', ...
'dependent',{'y'}, ...
'independent',{'x'}, ...
'coefficients',{'a','b','c',});
hold on
% build fit across columns
for i=1:size(davg,2);
[f{i},gof{i}] = fit(d(:,1),davg(:,i),ft,'StartPoint',[3, 2, 0.01]);
errorbar(d(:,1),davg(:,i),dstd(:,i));
plot(f{i})
end
xlabel({'Time t [s]'});
ylabel({'Shear stress σ [Pa]'});
title({''});
legend('Control','PEF','USa','USb','Enzyme');
hold off
Categories
Find more on Function Approximation and Clustering 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!