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

12 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 3 de Abr. de 2016
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 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 3 de Abr. de 2016
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 el 3 de Abr. de 2016
Thank you, that is what I was looking for without loops.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by