Removing pages with all nan values from a multidimensional array

5 views (last 30 days)
Is there any way to remove pages containing all nan values from a multidimensional array. Say I have this multidimensional array:
XYZ(:,:,1) =
NaN 2.2 3.2
NaN 5.7 NaN
1.5 2.5 2.8
XYZ(:,:,2) =
NaN NaN NaN
11.2 92 33.73
NaN NaN NaN
XYZ(:,:,3) =
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
I would like to have XYZ(:,:,3) to be removed since that page contains all nan values and retain the other two pags. I tried (from https://www.mathworks.com/matlabcentral/answers/152251-reduce-3d-array-by-removing-nan-elements):
remove_pages = all(all(isnan(XYZ),3),2);
XYZ(remove_pages,:,:) = []
but it does not remove the 'all-nan' pages. Any guidance would be great.
Thanks

Accepted Answer

Matt J
Matt J on 10 May 2022
Edited: Matt J on 10 May 2022
discard=all( isnan(XYZ) ,[1,2]);
XYZ(:,:,discard)=[];
  1 Comment
Mathan
Mathan on 10 May 2022
Perfect - thank you! Wondering whether there is any documentation somehwere where I can check more details on multidimensional array (like examples or information where I can check how to remove just rows containing all nan. pages containing all nan, etc).

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!