Deleting row/column iteratively of a correlation matrix

5 views (last 30 days)
Hi guys,
So I have a correlation matrix E which is quite large. Some of the individual (i,j) entries have E(i,j)>0.95 (or similar high values). I want to remove the j row/column in the correlation matrix since the correlations of j can be explained by i anyway (i and j are highly correlated). I want to do this for all such (i,j) pairs (this will have to be done iteratively for each entry where E(i,j)>0.95). However, I would also like a record of the j removed from the original matrix. For example:
E= 1 0.97 0.4
0.97 1 0.38
0.4 0.38 1
Hence I want the algorithm to select E(1,2) entry, and delete the second row and column. It will then move to the second such E(i,j)>0.95 and record the j removed ( but I would like to know what column/row j that has been removed from the original matrix). The output of the code will be the reduced matrix and the column/rows j deleted from the original matrix E.
Thank you so much for all your help!

Accepted Answer

Matt J
Matt J on 16 Dec 2018
Edited: Matt J on 16 Dec 2018
I see no need to do it iteratively. It can be done as a one-step process.
remove=any(E>0.95);
E=E(~remove,~remove);
  1 Comment
Ansh
Ansh on 23 Dec 2018
Hi, yes I think I was severely over complicating a very simple problem. Sorry for the late acceptance and thank you for your help. I also forgot to add that I have taken out the trivial diagonal 1 cases (correlation matrix)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!