IRootLab
An Open-Source MATLAB toolbox for vibrational biospectroscopy
get_probs.m
Go to the documentation of this file.
1 %>@ingroup conversion maths
2 %>@file
3 %>@brief Calculates per-class probabilities by counting the number of occurences for each class
4 %
5 %> @param classes Zero-based class vector. It may be a column or row vector, doesn't matter.
6 %> @param no_different =(auto) Number of classes. This can be correctly inferred only if the maximum possible class is present within @c classes.
7 %>
8 %> @return <code>[probs]</code> or <code>[probs, numbers_of_occurences]</code>
9 function varargout = get_probs(classes, no_different)
10 
11 if ~exist('no_different', 'var')
12  no_different = max(classes)+1; %> number of classes
13 end;
14 
15 % Transposes if needed
16 [nr, nc] = size(classes);
17 if nr > nc
18  classes = classes';
19 end
20 
21 sorted = sort(classes);
22 poss = find([1, diff(sorted), 1]);
23 no_occurences = diff(poss);
24 occur = zeros(1, no_different);
25 if ~isempty(classes)
26  occur(sorted(poss(1:end-1))+1) = no_occurences;
27 end;
28 
29 probs = occur/(numel(classes)+realmin);
30 if nargout == 1
31  varargout = {probs};
32 else
33  varargout = {probs, occur};
34 end;
35 
function get_probs(in classes, in no_different)