📄 nanstats.m
字号:
function [me, st, md, no] = nanstats(D)%NANSTATS Statistical operations that ignore NaNs and Infs.%% [mean, std, median, nans] = nanstats(D)%% Input and output arguments: % D (struct) data or map struct% (matrix) size dlen x dim%% me (double) columnwise mean% st (double) columnwise standard deviation% md (double) columnwise median% no (vector) columnwise number of samples (finite, not-NaN)% Contributed to SOM Toolbox vs2, February 2nd, 2000 by Juha Vesanto% http://www.cis.hut.fi/projects/somtoolbox/% Version 2.0beta juuso 300798 200900%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% check arguments(nargchk(1, 1, nargin)); % check no. of input args is correctif isstruct(D), if strcmp(D.type,'som_map'), D = D.codebook; else D = D.data; endend[dlen dim] = size(D);me = zeros(dim,1)+NaN;md = me;st = me;no = me;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% computationfor i = 1:dim, ind = find(isfinite(D(:, i))); % indices of non-NaN/Inf elements n = length(ind); % no of non-NaN/Inf elements me(i) = sum(D(ind, i)); % compute average if n == 0, me(i) = NaN; else me(i) = me(i) / n; end if nargout>1, md(i) = median(D(ind, i)); % compute median if nargout>2, st(i) = sum((me(i) - D(ind, i)).^2); % compute standard deviation if n == 0, st(i) = NaN; elseif n == 1, st(i) = 0; else st(i) = sqrt(st(i) / (n - 1)); end if nargout>3, no(i) = n; % number of samples (finite, not-NaN) end end endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -