Index: ../trunk-jpl/src/m/miscellaneous/prctile_issm.m =================================================================== --- ../trunk-jpl/src/m/miscellaneous/prctile_issm.m (revision 14325) +++ ../trunk-jpl/src/m/miscellaneous/prctile_issm.m (revision 14326) @@ -35,7 +35,7 @@ % check for any NaN in any columns - if ~any(isnan(x)) + if ~any(any((isnan(x)))) x=sort(x,1); n=size(x,1); Index: ../trunk-jpl/src/m/miscellaneous/normfit_issm.m =================================================================== --- ../trunk-jpl/src/m/miscellaneous/normfit_issm.m (revision 14325) +++ ../trunk-jpl/src/m/miscellaneous/normfit_issm.m (revision 14326) @@ -7,47 +7,54 @@ alpha=0.05; end -% remove any NaN +% check for any NaN in any columns - if find(isnan(x)) - muhat =zeros(1,size(x,2)); - sigmahat=zeros(1,size(x,2)); - muci =zeros(2,size(x,2)); - sigmaci =zeros(2,size(x,2)); - for j=1:size(x,2) - [muhat(j),sigmahat(j),muci(:,j),sigmaci(:,j)]=normfit_issm(x(~isnan(x(:,j)),j),alpha); - end - return - end + if ~any(any((isnan(x)))) % explicitly calculate the moments - muhat =mean(x); - sigmahat=std(x); + muhat =mean(x); + sigmahat=std(x); - if (nargout>2) - prob=1.-alpha/2.; + if (nargout>2) + prob=1.-alpha/2.; - if (size(x,1) == 1) - % operate like matlab normfit, mean, std, etc. - n=length(x); - else - n=size(x,1); + if (size(x,1) == 1) + % operate like matlab normfit, mean, std, etc. + n=length(x); + else + n=size(x,1); + end + + muci =zeros(2,length(muhat )); + sigmaci =zeros(2,length(sigmahat)); + + try + muci(1,:) =muhat-tinv(prob,n-1)*sigmahat/sqrt(n); + muci(2,:) =muhat+tinv(prob,n-1)*sigmahat/sqrt(n); + sigmaci(1,:)=sigmahat*sqrt((n-1)/chi2inv(prob ,n-1)); + sigmaci(2,:)=sigmahat*sqrt((n-1)/chi2inv(1.-prob,n-1)); + catch me + muci(1,:) =muhat; + muci(2,:) =muhat; + sigmaci(1,:)=sigmahat; + sigmaci(2,:)=sigmahat; + end end - muci =zeros(2,length(muhat )); - sigmaci =zeros(2,length(sigmahat)); + else - try - muci(1,:) =muhat-tinv(prob,n-1)*sigmahat/sqrt(n); - muci(2,:) =muhat+tinv(prob,n-1)*sigmahat/sqrt(n); - sigmaci(1,:)=sigmahat*sqrt((n-1)/chi2inv(prob ,n-1)); - sigmaci(2,:)=sigmahat*sqrt((n-1)/chi2inv(1.-prob,n-1)); - catch me - muci(1,:) =muhat; - muci(2,:) =muhat; - sigmaci(1,:)=sigmahat; - sigmaci(2,:)=sigmahat; +% must loop over columns, since number of elements could be different + + muhat =zeros(1,size(x,2)); + sigmahat=zeros(1,size(x,2)); + muci =zeros(2,size(x,2)); + sigmaci =zeros(2,size(x,2)); + +% remove any NaN and recursively call column + + for j=1:size(x,2) + [muhat(j),sigmahat(j),muci(:,j),sigmaci(:,j)]=normfit_issm(x(~isnan(x(:,j)),j),alpha); end end