Deleting row/column iteratively of a correlation matrix

10 次查看(过去 30 天)
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!

采纳的回答

Matt J
Matt J 2018-12-16
编辑:Matt J 2018-12-16
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 个评论
Ansh
Ansh 2018-12-23
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)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by