Reduce 3D array by removing NaN elements
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Anthony
am 25 Aug. 2014
Beantwortet: Anthony
am 25 Aug. 2014
Hi !
I ask you for help in Matlab in order to reduce a 3D array. In column there is three numbers (X,Y,Z coordinates) and each row corresponds to a different point. But these points have to respect a certain condition, otherwise three NaN are stored instead of the coordinates. The third dimension correspond to the time evolution of the coordinates stored in the 2D array.
For exemple:
A(:,:,1) =
1 2 3
NaN NaN NaN
NaN NaN NaN
A(:,:,2) =
NaN NaN NaN
1 2 3
NaN NaN NaN
A(:,:,3) =
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
If I try:
A(any(any(isnan(A),3),2),:,:) = [];
I get:
Empty array: 0-by-3-by-3
Or I would have:
A(:,:,1) =
1 2 3
NaN NaN NaN
A(:,:,2) =
NaN NaN NaN
1 2 3
A(:,:,3) =
NaN NaN NaN
NaN NaN NaN
The array is reduced but the shape is the same and I don't lose informations.
Thank your for your help and have a nice day !
2 Kommentare
the cyclist
am 25 Aug. 2014
What exactly do you want to get rid of? Any row in which all time slices are NaN?
Akzeptierte Antwort
the cyclist
am 25 Aug. 2014
Bearbeitet: the cyclist
am 25 Aug. 2014
Maybe you meant all() instead of any()?
idxToRemove = all(all(isnan(A),3),2);
A(idxToRemove,:,:) = []
0 Kommentare
Weitere Antworten (1)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!