ask_raf ha scritto:
Bisogna verificare se, in base all'algoritmo che vuoi implementare, se ti serva un solo valore (uno scalare) od un vettore.
Mi serve scalare, cioè deve generare valori di sigma e inserirli nella gaussiana e fare il fit con quel sigma. Quindi dovrei avere sigma1, sigma2, sigma3, ecc.
Comunque, intanto ho fatto una prova "semplificata" per iniziare. Cioè, invece di generare la sigma random gli ho assegnato dei valori:
eVcIpicco=eVc(:,5:18);
ckxfitIpicco=ckxfit(:,5:18);
figure (5);
plot5=figure (5);
set(plot5, 'Visible', 'off');
hold on
myfitga1= fit(eVcIpicco.',ckxfitIpicco.','1/(sqrt(2*pi)* 0.1 )* exp(-(x-mu).^2 /(2*(0.1).^2))','StartPoint',[284.7]);
myfitga2= fit(eVcIpicco.',ckxfitIpicco.','1/(sqrt(2*pi)* 0.2 )* exp(-(x-mu).^2 /(2*(0.2).^2))','StartPoint',[284.7]);
myfitga3= fit(eVcIpicco.',ckxfitIpicco.','1/(sqrt(2*pi)* 0.3 )* exp(-(x-mu).^2 /(2*(0.3).^2))','StartPoint',[284.7]);
myfitga4= fit(eVcIpicco.',ckxfitIpicco.','1/(sqrt(2*pi)* 0.4 )* exp(-(x-mu).^2 /(2*(0.4).^2))','StartPoint',[284.7]);
myfitga5= fit(eVcIpicco.',ckxfitIpicco.','1/(sqrt(2*pi)* 0.5 )* exp(-(x-mu).^2 /(2*(0.5).^2))','StartPoint',[284.7]);
fitresults{1}=myfitga1;
fitresults{2}=myfitga2;
fitresults{3}=myfitga3;
fitresults{4}=myfitga4;
fitresults{5}=myfitga5;
figure (5);
plot5=figure (5);
set(plot5, 'Visible', 'off');
hold on
plot((fitresults{1}),'r-',eVcIpicco,ckxfitIpicco,'b*');
legend_Ipicco{1}='Dati';
legend_Ipicco{2}='sigma=0.1';
plot((fitresults{2}),'g-');
legend_Ipicco{3}='sigma=0.2';
plot((fitresults{3}),'y-');
legend_Ipicco{4}='sigma=0.3';
plot((fitresults{4}),'m-');
legend_Ipicco{5}='sigma=0.4';
plot((fitresults{5}),'c-');
legend_Ipicco{6}='sigma=0.5';
xlabel('Energia (eV)');
ylabel('Conteggi relativi');
legend(legend_Ipicco);
title('Fit gaussiano primo picco');
axis([282 288 0 0.06]);
hold off;
in questo caso il codice funziona (cioè non da errori), ma le gaussiane sono troppo "alte" rispetto ai valori dei dati (vd. immagine)
quindi non si "basa" sui valori dei dati...