how to discard NaN vectors from a 3D matrix

1 Ansicht (letzte 30 Tage)
Itzik Ben Shabat
Itzik Ben Shabat am 20 Nov. 2013
Beantwortet: ag am 27 Dez. 2024
Hi, I have a 3D matrix. some of its rows/columns/depth vectors can be all NaN. I wish to creat a new matrix which is the same as the original one only without the NaNs. is there a function that can help me do this ? in 2D i used ismember and just substitute them with []. but for the 3D case im stuck. here is an example code of such matrix
mat=ones(6,6,6);
mat(1:2,:,:)=NaN(2,6,6);
NANLoc=isnan(mat);
( so I want mat(3:6,:,:) as a new matrix)
any ideas? thanks

Antworten (1)

ag
ag am 27 Dez. 2024
Hi Itzik,
I understand that you are want to remove all slices in your 3D matrix that contain NaN values. You can achieve this by utilizing the "isnan" function in MATLAB.
Below is a code snippet that demonstrates how to accomplish this:
% Identify slices to keep (those without any NaN values)
slicesToKeep = ~any(any(isnan(M), 1), 2);
% Construct the new matrix by retaining only the non-NaN slices
newM = M(:, :, slicesToKeep);
For more details, please refer to the following MathWorks documentation:
Hope this helps!

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by