Big modification in the way the histogram is calculated.
Now first the edges are calculated based on the two paramters: EqualSizeBinFlag and UseHistProxy. Once edges for bins are known (calculated) creating the cdf is the same for all cases.
This commit is contained in:
@ -4,33 +4,54 @@
|
||||
%% set some constants
|
||||
A=randn(100);
|
||||
%% create instance of CRE class
|
||||
S=CREClass;
|
||||
%% check histogram vs "new" technique
|
||||
% NB I come to the conclusion that the new method is not always working.
|
||||
% Why?
|
||||
S.Data=A;% set gaussian data
|
||||
S.nBin=(numel(S.Data)); % set nbin to npoints; This is fine as we use the cummulative distribution and the formulas as defined in Zografos
|
||||
% use histogram
|
||||
S.UseHistProxy=true;
|
||||
S.Calc;
|
||||
S
|
||||
% Use my aproximation for the histogram
|
||||
% only do this if the number of data points is not too big.
|
||||
S.UseHistProxy=false;
|
||||
S.Calc;
|
||||
S
|
||||
S1=CREClass;
|
||||
%% Calculate by setting labda equal to each of the (unique) values in the data.
|
||||
S1.UseHistProxy=false;
|
||||
S1.EqualSizeBinFlag=false;
|
||||
S1.Data=A;% set gaussian data
|
||||
S1.Calc;
|
||||
|
||||
% use histogram aproximation with unequal bin sizes in the histogram
|
||||
S2=CREClass;
|
||||
S2.UseHistProxy=true;
|
||||
S2.EqualSizeBinFlag=false;
|
||||
S2.Data=A;% set gaussian data
|
||||
S2.nBin=numel(A); % set nbin to npoints; This is fine as we use the cummulative distribution and the formulas as defined in Zografos
|
||||
S2.Calc
|
||||
|
||||
% use histogram aproximation with equal bin sizes in the histogram
|
||||
S3=CREClass;
|
||||
S3.UseHistProxy=true;
|
||||
S3.EqualSizeBinFlag=false;
|
||||
S3.Data=A;% set gaussian data
|
||||
S3.nBin=numel(A); % set nbin to npoints; This is fine as we use the cummulative distribution and the formulas as defined in Zografos
|
||||
S3.Calc
|
||||
|
||||
%Check recalculation of edges
|
||||
S4=CREClass;
|
||||
S4.UseHistProxy=true;
|
||||
S4.EqualSizeBinFlag=true;
|
||||
S4.Data=A;% set gaussian data
|
||||
S4.nBin=numel(A); % set nbin to npoints; This is fine as we use the cummulative distribution and the formulas as defined in Zografos
|
||||
S4.Calc
|
||||
disp(S4)
|
||||
S4.nBin=numel(A)/10;
|
||||
S4.CalcEdges ; % force a recalculation of the edges
|
||||
S4.Calc;
|
||||
disp(S4)
|
||||
|
||||
return;
|
||||
%% Show effect of scaling or ofsett the data
|
||||
% Scale
|
||||
S.Data=100*A;
|
||||
S.UseHistProxy=true;
|
||||
S.Calc;
|
||||
S
|
||||
disp(S);
|
||||
% Offset
|
||||
S.Data=A+10;
|
||||
S.UseHistProxy=true;
|
||||
S.Calc;
|
||||
S
|
||||
disp(S);
|
||||
%%
|
||||
|
||||
%% Test CCRE class
|
||||
@ -39,21 +60,30 @@ figure(2);clf;
|
||||
figure(3);clf;hold on;
|
||||
A=randn(100);
|
||||
B=A;
|
||||
B(:)=A(randperm(numel(A)))
|
||||
for k=-1:0.1:1
|
||||
B(:)=A(randperm(numel(A)));
|
||||
w=-1:0.1:1;
|
||||
out(numel(w),1)=struct('w',[],'CRE',[],'CCRE',[],'R',[]);
|
||||
for k=1:numel(w)
|
||||
out(k).w=w(k);
|
||||
CS=CCREClass;
|
||||
CS.Data=1*(1-abs(k))*A+k*B;
|
||||
CS.EquidistantBinFlag=false;
|
||||
CS.Data=1*(1-abs(w(k)))*A+w(k)*B;
|
||||
CS.nBin=50;
|
||||
CS.DataRef=B;
|
||||
CS.nBinRef=500;
|
||||
CS.Calc;
|
||||
figure(1);
|
||||
plot(k,CS.CCRE,'o')
|
||||
plot(k,CS.CRE,'x');
|
||||
out(k).CRE=CS.CRE;
|
||||
out(k).CCRE=CS.CCRE;
|
||||
out(k).R=CS.CCRE./CS.CRE;
|
||||
figure(2);
|
||||
scatter(CS.DataRef(:),CS.Data(:));
|
||||
figure(3);
|
||||
plot(k,CS.CCRE./CS.CRE,'d');
|
||||
title(sprintf('w: %d',w(k)));
|
||||
scatter(CS.DataRef(:),CS.Data(:));
|
||||
snapnow
|
||||
end
|
||||
CS
|
||||
snapnow
|
||||
disp(CS);
|
||||
figure(1);
|
||||
clf;hold on;
|
||||
plot([out(:).w],[out(:).CCRE],'o');
|
||||
plot([out(:).w],[out(:).CRE],'x');
|
||||
figure(3);clf
|
||||
plot([out(:).w],[out(:).R],'d')
|
Reference in New Issue
Block a user