removing rows contain NaN element from 3D array
Afficher commentaires plus anciens
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?
Réponse acceptée
Plus de réponses (2)
Andrei Bobrov
le 21 Oct 2016
Modifié(e) : Andrei Bobrov
le 21 Oct 2016
out = arrayfun(@(x)A(all(~isnan(A(:,:,x)),2),:,x),1:size(A,3),'un',0);
You can take the output in cell.
[m,n,p] = size(A) ;
iwant = cell(p,1) ;
for i = 1:p
% get Nan's from first column
temp = A(:,1,i) ;
id = ~isnan(temp) ;
iwant{i} =A(id,:,i) ;
end
You can access the required matrix using iwant{1}, iwant{2}.
Catégories
En savoir plus sur Numeric Types 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!