function [Y,Z]=stoch(X),
% stoch- make columns sum to one (like probabilities)
%
% stoch:: [[N,M]] -> [[N,M]], [[M]].
%
% optionally returns the column sums as well. 
% NOTE: this function assumes that X contains no NaNs and
% at most one Inf per column. Eg, the function will map
%
% [2;3;6;Inf;1;8] -> [0;0;0;1;0;0]
%
% See also: the function stochastic works on ROWS not columns.


Z=sum(X,1);
Y=X./repmat(Z,size(X,1),1);

% any nans are assumed to be inf/inf so are replaced with 1
Y(isnan(Y))=1;

