removing rows contain NaN element from 3D array
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
A(:,:,1) =
NaN NaN NaN 1.000000000000000
NaN NaN NaN 1.000000000000000
NaN NaN NaN 1.000000000000000
-0.251395732283393 0.831232695305901 0.495835045195662 1.000000000000000
-0.351395732283393 0.831232695305901 0.495835045195662 1.000000000000000
NaN NaN NaN 1.000000000000000
0.223016679421216 0.961124117481440 -0.162800465280223 1.000000000000000
A(:,:,2) =
NaN NaN NaN 1.000000000000000
NaN NaN NaN 1.000000000000000
NaN NaN NaN 1.000000000000000
-0.294547842132722 0.762119326903777 0.576555027950231 1.000000000000000
NaN NaN NaN 1.000000000000000
0.208731731285917 0.936100623203798 -0.283101903193612 1.000000000000000
NaN NaN NaN 1.000000000000000
How can I remove rows contain NaN from 3D A array? After removing each row contain NaN, sub-arrays' dimensions will not be equal. Is it allowed in Matlab?
0 Commenti
Risposta accettata
Guillaume
il 21 Ott 2016
Modificato: Guillaume
il 21 Ott 2016
No, you cannot have different size pages in a matrix.
You could convert the 3D array into a cell array of 2D matrices and remove the nans from these matrices:
cellA = num2cell(A, [1 2]); %keep dimension 1 and 2 together
nonancellA = cellfun(@(m) m(~any(isnan(m), 2), :), cellA, 'UniformOutput', false);
Whether or not it makes later processing easier, only you can say.
0 Commenti
Più risposte (2)
Andrei Bobrov
il 21 Ott 2016
Modificato: Andrei Bobrov
il 21 Ott 2016
out = arrayfun(@(x)A(all(~isnan(A(:,:,x)),2),:,x),1:size(A,3),'un',0);
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrices and Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!