Global Index (all files) (short | long) | Local Index (files in subdir) (short | long)
y = rms(x,dim)
RMS root-mean square. For vectors, RMS(x) returns the standard
deviation. For matrices, RMS(X) is a row vector containing
the root-mean-square of each column. The difference to STD is
that here the mean is NOT removed.
RMS(X,DIM) returns the root-mean-square of dimension DIM
See also STD,COV.
uses : intvers.m
| This function is called by | |
|---|---|
function y = rms(x,dim)
% Uwe Send, IfM Kiel, Apr 1992
% added NaN handling Gerd Krahmann, IfM Kiel, Oct 1993, Jun 1994
% removed bug in NaN handling G.Krahmann, Aug 1994
% added compatibility to MATLAB 5 G.Krahmann, LODYC Paris, Jul 1997
if intvers>4
if nargin<2
dim=min(find(size(x)>1));
end
if all(isnan(x))
y=nan;
return
end
x = shiftdim(x,dim-1);
s = size(x);
so = s(1);
s(1) = 1;
for n = 1:prod(s)
good = find(~isnan(x(:,n)));
if ~isempty(good)
y(1,n) = norm( x(good,n) ) / sqrt(length(good));
else
y(1,n) = NaN;
end
end
y = reshape(y,s);
y = shiftdim( y, ndims(x)-dim+1 );
else
[m,n] = size(x);
bad=find(isnan(x));
if ~isempty(bad)
if (m == 1) + (n == 1)
x=x(find(~isnan(x)));
[m,n] = size(x);
if isempty(x)
y=nan;
return
end
end
end
if (m == 1) + (n == 1)
m = max(m,n);
y = norm(x);
y = y / sqrt(m);
else
y = zeros(1,n);
for i=1:n
y(i) = rms(x(:,i));
end
end
end