removing zeros from matrix
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Mahmoud Zeydabadinezhad
      
 el 17 de Mzo. de 2016
  
    
    
    
    
    Comentada: Image Analyst
      
      
 el 18 de Mzo. de 2016
            Hi,
I have a matrix like this:
0 0 2 3 4 0;
1 0 2 0 0 1;
3 2 1 0 0 0;
0 1 0 3 0 1;
I want to remove the zeros so I could have something like this:
2 3 4;
1 2 1;
3 2 1;
1 3 1;
The number of zeros in each row of the original matrix is the same. Any idea how can I do this? Commands like A=A(A ~= 0) didn't work.
Thanks!
0 comentarios
Respuesta aceptada
  Roger Stafford
      
      
 el 17 de Mzo. de 2016
         A = A.';
 A = reshape(A(A~=0),3,4).';
2 comentarios
  Image Analyst
      
      
 el 18 de Mzo. de 2016
				Take it a step at a time and use intermediate variables and get rid of the semicolons so the result goes to the command window:
A=[0 0 2 3 4 0; 1 0 2 0 0 1; 3 2 1 0 0 0; 0 1 0 3 0 1]
Atransposed = A.'
vectorNoZeros = Atransposed(Atransposed ~= 0)
reshapedVector = reshape(vectorNoZeros,3,4).'
You'll see this, which hopefully explains it well enough:
A =
     0     0     2     3     4     0
     1     0     2     0     0     1
     3     2     1     0     0     0
     0     1     0     3     0     1
Atransposed =
     0     1     3     0
     0     0     2     1
     2     2     1     0
     3     0     0     3
     4     0     0     0
     0     1     0     1
vectorNoZeros =
     2
     3
     4
     1
     2
     1
     3
     2
     1
     1
     3
     1
reshapedVector =
     2     3     4
     1     2     1
     3     2     1
     1     3     1
Más respuestas (2)
  Azzi Abdelmalek
      
      
 el 17 de Mzo. de 2016
         v=[0 0 2 3 4 0; 1 0 2 0 0 1; 3 2 1 0 0 0; 0 1 0 3 0 1]
out=reshape(v(v~=0),size(v,1),[])
0 comentarios
  Image Analyst
      
      
 el 17 de Mzo. de 2016
        This works:
A=[0 0 2 3 4 0; 1 0 2 0 0 1; 3 2 1 0 0 0; 0 1 0 3 0 1]
for row = 1 : size(A, 1)
  thisRow = A(row,:)
  % Remove zeros
  thisRow(thisRow == 0) = [];
      % Append to new matrix.
  if row == 1
    Anozeros = thisRow
  else
    Anozeros = [Anozeros; thisRow];
  end
end
A = Anozeros
I'm sure there are other ways too. (Hopefully it's not homework, though it looks like it.)
Ver también
Categorías
				Más información sobre Loops and Conditional Statements 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!



