1 |
function [varargout] = stats(A) |
2 |
% stats(A) writes the basic statistics of the A to the terminal which |
3 |
% are i) the minimum finite value |
4 |
% ii) the maximum finite value |
5 |
% iii) the mean of the finite values |
6 |
% iv) the S.D. of the finite values ( RMS of [A-mean] ) |
7 |
% v) the fraction of non-finite elements excluded from calculations |
8 |
% |
9 |
% e.g. |
10 |
% >> stats(topo) |
11 |
% Min -4555 Max 0 Mean -2331.07 SD 1207.3441 N-Z 1024/1024 |
12 |
% |
13 |
% [Min Max Mean SD]=stats(topo); returns the statistics in Min, Max, |
14 |
% Mean and SD and does not write to the terminal. |
15 |
|
16 |
% $Header: /u/gcmpack/MITgcm/utils/matlab/stats.m,v 1.4 2004/06/04 17:03:50 adcroft Exp $ |
17 |
% $Name: $ |
18 |
|
19 |
A=A(:); |
20 |
|
21 |
%ii=find(A~=0); |
22 |
ii=find(isfinite(A)); |
23 |
if isempty(ii) |
24 |
ii=1; |
25 |
end |
26 |
sZ=prod(size(A)); |
27 |
minA=min(A(ii)); |
28 |
maxA=max(A(ii)); |
29 |
meanA=mean(A(ii)); |
30 |
sdA=sqrt( mean( (A(ii)-meanA).^2 ) ); |
31 |
rmsA=sqrt( mean( A(ii).^2 ) ); |
32 |
nZ=sum(~isfinite(A)); |
33 |
switch max(nargout) |
34 |
case {0} |
35 |
% disp( ... |
36 |
% sprintf('Min %0.5g Max %0.5g Mean %0.5g SD %0.5g NaN %i/%i',... |
37 |
% minA,maxA,meanA,sdA,nZ,sZ) ); |
38 |
disp( ... |
39 |
sprintf('Min %0.5g Max %0.5g Mean %0.5g RMS %0.5g NaN %i/%i',... |
40 |
minA,maxA,meanA,rmsA,nZ,sZ) ); |
41 |
case {1} |
42 |
varargout(1)={minA}; |
43 |
case {2} |
44 |
varargout(1)={minA}; |
45 |
varargout(2)={maxA}; |
46 |
case {3} |
47 |
varargout(1)={minA}; |
48 |
varargout(2)={maxA}; |
49 |
varargout(3)={meanA}; |
50 |
case {4} |
51 |
varargout(1)={minA}; |
52 |
varargout(2)={maxA}; |
53 |
varargout(3)={meanA}; |
54 |
varargout(4)={sdA}; |
55 |
otherwise |
56 |
error('Too many return arguments requested') |
57 |
end |