FOR loop with IF condition alternative
    8 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Agent Cooper
 am 5 Aug. 2014
  
    
    
    
    
    Beantwortet: Agent Cooper
 am 5 Aug. 2014
            I have the following code
I = [1:1:10; 10:10:100]'
a = size(I)
limit1 = 1       
limit2 = 3
limit3 = 7    
limit4 = 10
for j = 1:a(2)
      X = I(:,j)
      for k = 1:a(1)
          if (k>limit1 && k<limit2) || (k>limit3 && k<limit4) 
              Y = 0
          else Y = X(k)
          end
       B(k) = Y 
      end
      C{j} = B'
end
that replaces the 2nd, the 8th and the 9th elements on each column with 0. For the example above, the [1 2 3 4 5 6 7 8 9 10; 10 20 30 40 50 60 70 80 90 100] matrix is replaced with the [1 0 3 4 5 6 7 0 0 10; 10 0 30 40 50 60 70 0 0 100] matrix.
Could anyone give me a hint on how to do this without using the FOR loop and the IF condition (because they are very slow when processing big amounts of data)?
0 Kommentare
Akzeptierte Antwort
  Hikaru
      
 am 5 Aug. 2014
        Try this
I = [1:1:10; 10:10:100]';
I(2,:) = 0;
I(8,:) = 0;
I(9,:) = 0;
2 Kommentare
  Hikaru
      
 am 5 Aug. 2014
				Sorry, I failed to notice it.
One way I can think of is something like this.
I = [1:1:10; 10:10:100]';
a = size(I);
limit = [2,3,9]; % specify the rows you want to be 0 here
for i=1:a(2)
    I(limit(i),:) = 0;
end
I'm assuming you want the whole row be 0, but let me know if that's not the case.
Weitere Antworten (2)
  Amir
      
 am 5 Aug. 2014
        
      Bearbeitet: Amir
      
 am 5 Aug. 2014
  
      Please try this code. You will only need to specify your limits (L matrix)
I = [1:1:10; 10:10:100]';
L = [1 3 7 10]; % limit Matrix
NewL=vec2mat(L,2);
R=[]; %Removed rows
for i=1:size(NewL,1)
    R=[R NewL(i,1)+1:NewL(i,2)-1];
end
I(R,:)=0; % or I(R,:)=[] if you want to remove those rows
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
			
	Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


