Organize old files
This commit is contained in:
105
workflow/.old/apps/matlab/ezview/TempBU/histfitJR.m
Executable file
105
workflow/.old/apps/matlab/ezview/TempBU/histfitJR.m
Executable file
@@ -0,0 +1,105 @@
|
||||
function h = histfitJR(data,nbins,dist)
|
||||
%HISTFIT Histogram with superimposed fitted normal density.
|
||||
% HISTFIT(DATA,NBINS) plots a histogram of the values in the vector DATA,
|
||||
% along with a normal density function with parameters estimated from the
|
||||
% data. NBINS is the number of bars in the histogram. With one input
|
||||
% argument, NBINS is set to the square root of the number of elements in
|
||||
% DATA.
|
||||
%
|
||||
% HISTFIT(DATA,NBINS,DIST) plots a histogram with a density from the DIST
|
||||
% distribution. DIST can take the following values:
|
||||
%
|
||||
% 'beta' Beta
|
||||
% 'birnbaumsaunders' Birnbaum-Saunders
|
||||
% 'exponential' Exponential
|
||||
% 'extreme value' or 'ev' Extreme value
|
||||
% 'gamma' Gamma
|
||||
% 'generalized extreme value' 'gev' Generalized extreme value
|
||||
% 'generalized pareto' or 'gp' Generalized Pareto (threshold 0)
|
||||
% 'inverse gaussian' Inverse Gaussian
|
||||
% 'logistic' Logistic
|
||||
% 'loglogistic' Log logistic
|
||||
% 'lognormal' Lognormal
|
||||
% 'negative binomial' or 'nbin' Negative binomial
|
||||
% 'nakagami' Nakagami
|
||||
% 'normal' Normal
|
||||
% 'poisson' Poisson
|
||||
% 'rayleigh' Rayleigh
|
||||
% 'rician' Rician
|
||||
% 'tlocationscale' t location-scale
|
||||
% 'weibull' or 'wbl' Weibull
|
||||
%
|
||||
% H = HISTFIT(...) returns a vector of handles to the plotted lines.
|
||||
% H(1) is a handle to the histogram, H(2) is a handle to the density curve.
|
||||
|
||||
% Copyright 1993-2008 The MathWorks, Inc.
|
||||
% $Revision: 1.1.8.2.2.1 $ $Date: 2010/12/13 15:00:40 $
|
||||
|
||||
if ~isvector(data)
|
||||
error(message('stats:histfit:VectorRequired'));
|
||||
end
|
||||
|
||||
data = data(:);
|
||||
data(isnan(data)) = [];
|
||||
n = numel(data);
|
||||
|
||||
if nargin<2 || isempty(nbins)
|
||||
nbins = ceil(sqrt(n));
|
||||
elseif ~isscalar(nbins) || ~isnumeric(nbins) || ~isfinite(nbins) ...
|
||||
|| nbins~=round(nbins)
|
||||
error(message('stats:histfit:BadNumBins'))
|
||||
end
|
||||
|
||||
% Do histogram calculations
|
||||
[bincounts,bincenters]=hist(data,nbins);
|
||||
|
||||
% Fit distribution to data
|
||||
if nargin<3 || isempty(dist)
|
||||
dist = 'normal';
|
||||
end
|
||||
try
|
||||
pd = fitdist(data,dist);
|
||||
catch myException
|
||||
if isequal(myException.identifier,'stats:ProbDistUnivParam:fit:NRequired')
|
||||
% Binomial is not allowed because we have no N parameter
|
||||
error(message('stats:histfit:BadDistribution'))
|
||||
else
|
||||
% Pass along another other errors
|
||||
throw(myException)
|
||||
end
|
||||
end
|
||||
|
||||
% Find range for plotting
|
||||
q = icdf(pd,[0.0013499 0.99865]); % three-sigma range for normal distribution
|
||||
x = linspace(q(1),q(2));
|
||||
if ~pd.Support.iscontinuous
|
||||
% For discrete distribution use only integers
|
||||
x = round(x);
|
||||
x(diff(x)==0) = [];
|
||||
end
|
||||
% Plot the histogram with no gap between bars.
|
||||
%if min(data)==0, neglim=-50; else neglim= min(data); end
|
||||
%hh = bar(bincenters,bincounts,[neglim,max(data)],'hist');
|
||||
hh = bar(bincenters,bincounts,[min(data),max(data)],'hist');
|
||||
|
||||
% Normalize the density to match the total area of the histogram
|
||||
xd = get(hh,'Xdata'); % Gets the x-data of the bins.
|
||||
if min(xd(:))==0, neglim = -50; else neglim= min(xd(:)); end
|
||||
%rangex = max(xd(:)) - min(xd(:)); % Finds the range of this data.
|
||||
rangex = max(xd(:)) - (neglim); % Finds the range of this data.
|
||||
|
||||
binwidth = rangex/nbins; % Finds the width of each bin.
|
||||
area = n * binwidth;
|
||||
y = area * pdf(pd,x);
|
||||
|
||||
% Overlay the density
|
||||
np = get(gca,'NextPlot');
|
||||
set(gca,'NextPlot','add')
|
||||
hh1 = plot(x,y,'r-','LineWidth',2);
|
||||
set(hh1,'visible','off')
|
||||
|
||||
if nargout == 1
|
||||
h = [hh; hh1];
|
||||
end
|
||||
|
||||
set(gca,'NextPlot',np)
|
||||
Reference in New Issue
Block a user