# Finding subset of uncorrelated variables

Assume I have $n$ random variables with covariance matrix $\Sigma$. Now, I want to find $m$ groups of variables such that they very correlated inside each group, but their correlation between groups is small.

This is kind of saying that I want to shuffle the random variables such that the covariance matrix looks as close as possible to a block diagonal matrix.

Do I you know if there's an algorithm for this? I guess I would want something similar to the Jordan normal form of the matrix, but that implies taking linear combinations of the random variables, if I am not mistaken. Is there another way to do it?