change only those zeros to NaN if all in row are 0
    10 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
I have
 a =
     1     2     3
     0     0     0
     2     1     0
     4     5     0
     0     0     0
     2     0     1
I need
 b =
     1     2     3
   NaN   NaN   NaN
     2     1     0
     4     5     0
   NaN   NaN   NaN
     2     0     1
i.e. only if all elements in row are 0 replace with NaN
0 comentarios
Respuesta aceptada
  Thomas
      
 el 6 de Jun. de 2012
         a(any(a,2)==0,:)=NaN;
 b=a
3 comentarios
  Image Analyst
      
      
 el 6 de Jun. de 2012
				It works because any() looks for non-zeros, so it's only zero if there are no non-zeros, in other words, if they are all zeros. Perhaps my answer (not my comment above) might be more intuitive though - it used all().
Más respuestas (1)
  Image Analyst
      
      
 el 6 de Jun. de 2012
        % Make a copy so we don't change a.
b=a
% Find out which rows are all zeros.
nonZeroRows = all(b == 0, 2)
% Assign all columns of the all-zero rows to nans.
b(nonZeroRows, :) = NaN
0 comentarios
Ver también
Categorías
				Más información sobre Logical en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



