74 views (last 30 days)

Show older comments

Hi I would like to ask if there is a function that works like 'histc' for as much as 10 random variables. For short illustration:

if there are 3 random variables with 2 states each. The various combinations of the 3 random variables would give 2*2*2=8 states. And the function would return the counts (obversations) for a given dataset of the the 3 rvs, very much like the 'histc' function.

Does matlab have a built in function like that or is there a not too complicated way of calculating it?

Thanks a bunch

Jonathan LeSage
on 16 Oct 2013

Edited: Jonathan LeSage
on 16 Oct 2013

If you are dealing with discrete random variables, you really only need to use the accumarray function.

Here is an example for three random variables with two possible states:

% Generate three discrete random variables (uncorrelated)

numRealizations = 100;

numStates = 2;

x = randi(numStates,numRealizations,1);

y = randi(numStates,numRealizations,1);

z = randi(numStates,numRealizations,1);

% Count the number of (x,y,z) values in each possible state

rvCount = accumarray([x y z],1);

To include additional random variables, you can just append more values to the matrix input to accumarray ([x y z t], etc.). Counting the values shouldn't be too much of a problem, however, visualization is another problem entirely!

Hope this helps to get you started and good luck!

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!