Best strategy for fastest way to extract arrays built from matrix elements and then reassemble after ifft()

I have a frequency domain data set organized as shown in the attached image (set up as an array of matrices like: [zeros(40,4000) for _ in 1:4096] )

I need to create the time domain data set at right by applying the inverse FFT to arrays consisting of elements in the same position of each of the matrices in the original array. For example, the red arrow shows the array grouping for the [1,1] matrix position of the frequency domain data set. This operation is performed for each matrix element position.

I prefer to have the data organized in this way for other reasons that call for iterating over each matrix and performing operations such as inversion. I could use the getindex function to group the arrays:

array = getindex.(Matrix,position)

However, it seems like this would be cumbersome since I would then have to reassemble the data set. Does anyone know of a better approach (prioritizing speed)?

3 posts were merged into an existing topic: Performance Help on Large Matrix Manipulation