Shifting elements to the left / top
    8 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
a = [1   2   3;
     NaN 4   5;
     6   NaN 7;
     8   9   NaN;
     NaN NaN 10;
     NaN 11  NaN;
     12  NaN NaN;
     NaN NaN NaN]
I'd like to transform a matrix above into the following:
a = [1  2   3;
     4  5   NaN;
     6  7   NaN;
     8  9   NaN;
     10 NaN NaN;
     11 NaN NaN;
     12 NaN NaN;]
i.e. remove all NaN elements and shift remaining elements to the left. And if dimension mismatch, fill with NaN into it.
No iterations preferred
0 Commenti
Risposte (1)
  Matt J
      
      
 il 19 Apr 2013
            b=a.';
    bmap0=isnan(b);
    b(:,all(bmap0,1))=[];
    bmap0=~isnan(b);
    data=b(bmap0);
    b(~bmap0)=inf;
    b=sort(b);
    bmap1=~isinf(b);
    b(bmap1)=data(:);
    bmap2=isinf(b);
    b(isinf(b))=nan;
    a=b.'
1 Commento
  Matt J
      
      
 il 19 Apr 2013
				A lot of this would simplify if you worked columnwise, instead of row-wise and used Infs instead of NaNs
Vedere anche
Categorie
				Scopri di più su NaNs in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

