How to place NaN at diagonal position in cell array?
Afficher commentaires plus anciens
hey all
a={[],-1,-1,0.8,-0.7,[],[]; [],[],0.9,1,[],-0.9,0.6; -1,[],[],0.9,0.2,[],0.8}
how to place diagonal value in each row of 'a'. Diagonal value can be [] or NaN. Like this
out={NaN,[],-1,-1,0.8,-0.7,[],[]; [],NaN,[],0.9,1,[],-0.9,0.6; -1,[],NaN,[],0.9,0.2,[],0.8}
3 commentaires
Jos (10584)
le 6 Mar 2018
out has different dimensions than a?
Tha saliem
le 6 Mar 2018
Tha saliem
le 7 Mar 2018
Réponse acceptée
Plus de réponses (3)
James Tursa
le 6 Mar 2018
Assuming there are at least as many columns as rows:
[m,n] = size(a);
out = cell(n+1,m);
x = logical(eye(size(out)));
out(~x) = a';
out(x) = {nan};
out = out';
Jos (10584)
le 6 Mar 2018
a={[],-1,-1,0.8,-0.7,[],[]; [],[],0.9,1,[],-0.9,0.6; -1,[],[],0.9,0.2,[],0.8}
sz = size(a)
out = repmat({NaN}, sz + [0 1])
tf = triu(true(sz))
tfc = false(sz(1),1)
out([tfc tf]) = a(tf)
out([~tf tfc]) = a(~tf)
(btw, why use cell arrays?)
1 commentaire
Tha saliem
le 7 Mar 2018
Jos (10584)
le 6 Mar 2018
Put NaNs on the diagonal:
tf = eye(size(a))==1
a(tf) = {NaN}
1 commentaire
Tha saliem
le 6 Mar 2018
Catégories
En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!