Deleting row/column iteratively of a correlation matrix

5 ビュー (過去 30 日間)
Ansh
Ansh 2018 年 12 月 16 日
コメント済み: Ansh 2018 年 12 月 23 日
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 Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by