calculating cross-correlation for a 10000 by 10000 matrix

5 views (last 30 days)
I am using the xcorr as bellow
simM=xcorr(data,10,'normalized');
Here data is a 1200 by 1200 double and the the output i.e simM is a 21*1440000 double . Now i want to calculate for more values but my . systems ram is only 64 GB. For data bigger than 1500 by 1500 the system is giving out of memeory error. Which is acceptable. So according to some of the answers i have read in matlab community i found out splitting the matrix is an option. But can you please describe how can i do that.
For 1100 by 1100 samples the time consumed by my system is 147 seconds if posssible can you suggest a way to improve the speed.

Accepted Answer

Sivani Pentapati
Sivani Pentapati on 2 Sep 2021
From my understanding, you want to calculate correlation for large matrix which cannot be stored in memory.
  1. This issue can be addressed using Distributed arrays along with corrcoef, where each worker can compute correlation on arrays created using distributed function. For more information, refer to Building from Smaller Arrays sub-section under Creating Codistributed Arrays Section in this link to reduce memory requirements
  2. Additionally the heap memory of the system can also be increased to adhere to the memory requirements. Please refer to this link on how increase java heap space in your MATLAB environment.

More Answers (0)

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!