Greatfit.m (Matlab program fot fitting): Difference between revisions

From New IAC Wiki
Jump to navigation Jump to search
Oborn (talk | contribs)
No edit summary
 
Oborn (talk | contribs)
No edit summary
Line 1: Line 1:
fid = fopen('datafile.m','r');


fid = fopen('datafile.m','r');
z = fscanf(fid, '%g');  
z = fscanf(fid, '%g');  
fclose(fid);
fclose(fid);
x=[0:4095];
x=[0:4095];
time=[979:1999];
time=[979:1999];
counts=([z(979:1999)])';
counts=([z(979:1999)])';


plot(x,z,'r');
plot(x,z,'r');
xlabel('Channel'); ylabel('Number of Counts');
xlabel('Channel'); ylabel('Number of Counts');
hold on
hold on
modelFun =  @(p,x) p(1).*exp((-(x-p(2)).^2)/(2*p(3).^2))+p(4).*exp((-(x-p(5)).^2)/(2*p(6).^2))+p(7).*exp((-(x-p(8)).^2)/(2*p(9).^2));
modelFun =  @(p,x) p(1).*exp((-(x-p(2)).^2)/(2*p(3).^2))+p(4).*exp((-(x-p(5)).^2)/(2*p(6).^2))+p(7).*exp((-(x-p(8)).^2)/(2*p(9).^2));
startingVals = [800 1150 100 500 1250 100 100 1450 300];
startingVals = [800 1150 100 500 1250 100 100 1450 300];
coefEsts = nlinfit(time, counts, modelFun, startingVals);
coefEsts = nlinfit(time, counts, modelFun, startingVals);
xgrid = linspace(900,2000,1000);
xgrid = linspace(900,2000,1000);
line(xgrid, modelFun(coefEsts, xgrid), 'Color','m');
line(xgrid, modelFun(coefEsts, xgrid), 'Color','m');
plot(x, coefEsts(1).*exp((-(x-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(x-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(x-coefEsts(8)).^2)/(2*coefEsts(9).^2)),'g','LineWidth',1.5)
plot(x, coefEsts(1).*exp((-(x-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(x-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(x-coefEsts(8)).^2)/(2*coefEsts(9).^2)),'g','LineWidth',1.5)
axis([700 2500 0 1000])
axis([700 2500 0 1000])
xsmallarea=0:976;
xsmallarea=0:976;
xlargearea=976:4095;
xlargearea=976:4095;
ysmallarea=coefEsts(1).*exp((-(xsmallarea-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(xsmallarea-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(xsmallarea-coefEsts(8)).^2)/(2*coefEsts(9).^2));
ysmallarea=coefEsts(1).*exp((-(xsmallarea-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(xsmallarea-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(xsmallarea-coefEsts(8)).^2)/(2*coefEsts(9).^2));
ylargearea=coefEsts(1).*exp((-(xlargearea-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(xlargearea-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(xlargearea-coefEsts(8)).^2)/(2*coefEsts(9).^2));
ylargearea=coefEsts(1).*exp((-(xlargearea-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(xlargearea-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(xlargearea-coefEsts(8)).^2)/(2*coefEsts(9).^2));
SmallArea=trapz(xsmallarea,ysmallarea)
SmallArea=trapz(xsmallarea,ysmallarea)
LargeArea=trapz(xlargearea,ylargearea)
LargeArea=trapz(xlargearea,ylargearea)
Ratio_percent=100*SmallArea/(SmallArea+LargeArea)
Ratio_percent=100*SmallArea/(SmallArea+LargeArea)

Revision as of 07:37, 29 October 2008

fid = fopen('datafile.m','r');

z = fscanf(fid, '%g');

fclose(fid);

x=[0:4095];

time=[979:1999];

counts=([z(979:1999)])';

plot(x,z,'r');

xlabel('Channel'); ylabel('Number of Counts');

hold on

modelFun = @(p,x) p(1).*exp((-(x-p(2)).^2)/(2*p(3).^2))+p(4).*exp((-(x-p(5)).^2)/(2*p(6).^2))+p(7).*exp((-(x-p(8)).^2)/(2*p(9).^2)); startingVals = [800 1150 100 500 1250 100 100 1450 300];

coefEsts = nlinfit(time, counts, modelFun, startingVals);

xgrid = linspace(900,2000,1000);

line(xgrid, modelFun(coefEsts, xgrid), 'Color','m');

plot(x, coefEsts(1).*exp((-(x-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(x-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(x-coefEsts(8)).^2)/(2*coefEsts(9).^2)),'g','LineWidth',1.5)

axis([700 2500 0 1000])

xsmallarea=0:976;

xlargearea=976:4095;

ysmallarea=coefEsts(1).*exp((-(xsmallarea-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(xsmallarea-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(xsmallarea-coefEsts(8)).^2)/(2*coefEsts(9).^2));

ylargearea=coefEsts(1).*exp((-(xlargearea-coefEsts(2)).^2)/(2*coefEsts(3).^2))+coefEsts(4).*exp((-(xlargearea-coefEsts(5)).^2)/(2*coefEsts(6).^2))+coefEsts(7).*exp((-(xlargearea-coefEsts(8)).^2)/(2*coefEsts(9).^2));

SmallArea=trapz(xsmallarea,ysmallarea)

LargeArea=trapz(xlargearea,ylargearea)

Ratio_percent=100*SmallArea/(SmallArea+LargeArea)