I am generating a lot of random matrices and want to study their statistical properties. Right now I am storing them in a 3-dimensional array, where the first two dimensions are the matrix sizes, let’s say square matrices of size D, and the third dimension is the number of realizations of random matrices. E.g.
D = 10 realizations = 20 matrices(D,D,realizations)
holds 20 10x10 matrices. Now I want to calculate some statistics for each entry of the random matrices, say the mean of each entry or the variance of each entry. I did this in two ways. First, by explicitly writing out the formulas for mean and variance and then using them for each entry, e.g.
mu = zeros(D,D) for i in 1:realizations mu .+= matrices[:,:,i] end mu ./= realizations
Second, converting the D x D x realizations array into a DxD matrix of vectors of length realizations. And then using the functions
The array conversion hit performance really hard, because I did it naively in a loop.
How would achieve my goal, calculate some statistics for each entry of the random matrices, by using functions from
Statistics or any other package, and not have to allocate a new array?