21 lines
532 B
Matlab
21 lines
532 B
Matlab
function y = smartstd(x,dim)
|
|
%SMARTSTD Standard deviation of finite elements.
|
|
%
|
|
% Same as STD except that it ignores NaN and Inf instead of
|
|
% propagating them
|
|
%
|
|
% Normalizes by N, not N-1
|
|
|
|
if nargin<2,
|
|
dim = min(find(size(x)~=1));
|
|
if isempty(dim), dim = 1; end
|
|
end
|
|
|
|
tile=ones(1,max(ndims(x),dim));
|
|
tile(dim)=size(x,dim);
|
|
|
|
xc=x-repmat(smartmean(x,dim),tile); % Remove mean
|
|
y=sqrt(smartmean(conj(xc).*xc,dim)); % normalize by N
|
|
|
|
% y=sqrt(smartsum(conj(xc).*xc,dim)/(smartsum(abs(sign(xc)), dim)-1)); %normalize by N-1
|