delete the rows will all zeros in multi-dimensional matrix
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Dear all,
Let say I have a matrix M of size 6 x 3 x 3. And on each channel there are some zero rows (note that zero rows are evenly present in all channels). How can I remove the rows with all zeros.
For example,
M(:,:,1) =
     422   397   553
       0     0     0
       0     0     0
     476   494   520
       0     0     0
       0     0     0
M(:,:,2) =
       0     0     0
     384   494   504
       0     0     0
       0     0     0
     385   446   474
       0     0     0
M(:,:,3) =
             0           0           0
             0           0           0
          1194        1176        1295
             0           0           0
             0           0           0
          1202        1141        1295
3 Commenti
  Azzi Abdelmalek
      
      
 il 16 Set 2012
				
      Modificato: Azzi Abdelmalek
      
      
 il 16 Set 2012
  
			If you remove certain rows, your chanels will have different sizes, then you should use cell array. In this case they have the same size, but not in general
Risposta accettata
  Andrei Bobrov
      
      
 il 16 Set 2012
        
      Modificato: Andrei Bobrov
      
      
 il 16 Set 2012
  
      out = reshape(M(bsxfun(@times,any(M,2),ones(1,size(M,2)))>0),[],size(M,2),size(M,3));
or only for your example
reshape(M(M>0),[],size(M,2),size(M,3))
0 Commenti
Più risposte (1)
  Azzi Abdelmalek
      
      
 il 16 Set 2012
        
      Modificato: Azzi Abdelmalek
      
      
 il 16 Set 2012
  
            for k=1:size(M,3)
          A=M(:,:,k)
          A(find(sum(A,2)==0),:)=[]
          res{k} = num2cell(A)
      end
      res{:}
1 Commento
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
			
	Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!