Extract upper diagonal half in a large cell array and replace rest with NaN

12 ビュー (過去 30 日間)
SMA
SMA 2016 年 4 月 3 日
コメント済み: SMA 2016 年 4 月 3 日
Hello,
I have a very large cell array and want to select upper diagonal from it and replace the rest with NaNs. For example, if I have a 5x5 cell array, I'd like to get a result similar to;
1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 NaN
3,1 3,2 3,3 NaN NaN
4,1 4,2 NaN NaN NaN
5,1 NaN NaN NaN NaN

採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2016 年 4 月 3 日
A=[1 2 3 4; 5 6 7 8; 9 10 11 12;13 14 15 16]
ii=ones(size(A))
idx=rot90(tril(rot90(ii)),-1);
A(~idx)=nan
  4 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2016 年 4 月 3 日
or without cell2mat
A={1 2 3 4; 5 6 7 8; 9 10 11 12;13 14 15 16}
ii=ones(size(A))
idx=rot90(tril(rot90(ii)),-1);
A(~idx)={nan}
SMA
SMA 2016 年 4 月 3 日
Thank you, that is what I was looking for without loops.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by