Borrar filtros
Borrar filtros

Remove sub-matrix if any col are all nan (3D matrix)

2 visualizaciones (últimos 30 días)
Dave
Dave el 19 de Feb. de 2015
Comentada: Dave el 19 de Feb. de 2015
Hi, In a 3D matrix, I have 4 sub-matrices of 3x3, like A below
A=[1 2 nan; 2 5 nan; 4 2 nan];
A(:,:,2)=[3 4 5; 4 nan nan; 2 3 4];
A(:,:,3)=[8 nan nan; 1 nan nan; 8 nan nan];
A(:,:,4)=[1 2 3; 6 7 8; 3 3 5];
I need a new matrix that EXCLUDES the cases where the columns of A are ALL nan. In the case above submatrices A1 and A3 should be excluded, and the new matrix, say B, should be
B(:,:,1)=[3 4 5; 4 nan nan; 2 3 4];
B(:,:,2)=[1 2 3; 6 7 8; 3 3 5];
I'd also need the id of the sub-matrices of A to be finally used in B, in this case 2 and 4.
Let me know if it's not clear thanks

Respuesta aceptada

Image Analyst
Image Analyst el 19 de Feb. de 2015
Using the any() and all() functions I'm sure you'll be able to figure it out - you're a smart engineer. These are useful functions to learn about as they are used often. Here's one way to do it:
A=[1 2 nan; 2 5 nan; 4 2 nan];
A(:,:,2)=[3 4 5; 4 nan nan; 2 3 4];
A(:,:,3)=[8 nan nan; 1 nan nan; 8 nan nan];
A(:,:,4)=[1 2 3; 6 7 8; 3 3 5]
% Find out what slices need to be deleted.
for z = 1 : size(A, 3)
deleteThisSlice(z) = any(all(isnan(A(:,:,z)), 1))
end
B = A(:, :, ~deleteThisSlice)

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by