Erase rows of a cell based on a condition
    1 Ansicht (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Maria
 am 19 Jul. 2014
  
    
    
    
    
    Kommentiert: Maria
 am 19 Jul. 2014
            I have a cell array with 20 000 rows (A - numbers are not repeated) and 17 columns (years). In the example below I only present 6 columns and 5 rows.
CA:
   A    1997    1999    2000    2001    2002 
  13  189  189  39  39  39
  16  183  183  183  183  183
  18  76  76  76  76  28
  22  []  []  []  []  123
  25  []  []  []  []  []´
I am trying to erase the rows that do not present at least two consecutive values. And in case the value changes , to get a new variable only with these specific rows.
CA:
   A    1997    1999    2000    2001    2002 
  13  189  189  39  39  39
  16  183  183  183  183  183
  18  76  76  76  76  28
NEW:
   A    1997    1999    2000    2001    2002 
  13  189  189  39  39  39
1 Kommentar
Akzeptierte Antwort
  Azzi Abdelmalek
      
      
 am 19 Jul. 2014
        
      Bearbeitet: Azzi Abdelmalek
      
      
 am 19 Jul. 2014
  
      To get CA
A  ={ ' A' 1997    1999    2000    2001    2002
  13  189  189  39  39  39
  16  183  183  183  183  183
  18  76  76  76  76  28
  22  []  []  []  []  123
  25  []  []  []  []  []}
B=A(2:end,:);
idx=~cellfun(@isempty,B)
B(arrayfun(@(x) isempty(strfind(idx(x,:),[1 1])),1:size(idx,1)),:)=[]
CA=[A(1,:) ;B]
It's not clear how did you get NEW
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

