Solved – How to calculate a discrete Cumulative Distribution MultiDimensional Array from a discrete Probability Mass Array when dimensions > 2?

I would appreciate any help in trying to calculate the Cumulative Distribution Array of a Probability Mass Array when dimensions > 2, essentially a discrete joint cumulative distribution from a sample of data. MATLAB syntax would be most preferred. In a bivariate case (2 dimensions), the following works well:
cumsum(cumsum(epdf,1),2)./total, where cumsum calculates the cumulative sum across the first and second dimensions.

Unfortunately, cumsum doesn't support more than 2 dimensions, at least from what I can tell. The following is a simple 3D PDF I'm testing on in MATLAB. Thank you for any suggestions.

ePDF(1,1,1) = 1; ePDF(2,1,1) = 2; ePDF(1,2,1) = 3; ePDF(2,2,1) = 4; ePDF(1,1,2) = 5; ePDF(2,1,2) = 6; ePDF(1,2,2) = 7; ePDF(2,2,2) = 8; total = 36; 

Edit: I found an N-Dimensional CumSum function from the open source program FreeMat which does exactly what I need. Is there a way to replicate this function easily in Matlab?

(Just repeating my comment as the answer here)

The solution is to recursively call the cumsum function for each dimension:

CDF = cumsum(ePDF,1); CDF = cumsum(CDF,2); CDF = cumsum(CDF,3); 

Similar Posts:

Rate this post

Leave a Comment