FOR loop with IF condition alternative
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Agent Cooper
 el 5 de Ag. de 2014
  
    
    
    
    
    Respondida: Agent Cooper
 el 5 de Ag. de 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 comentarios
Respuesta aceptada
  Hikaru
      
 el 5 de Ag. de 2014
        Try this
I = [1:1:10; 10:10:100]';
I(2,:) = 0;
I(8,:) = 0;
I(9,:) = 0;
2 comentarios
  Hikaru
      
 el 5 de Ag. de 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.
Más respuestas (2)
  Amir
      
 el 5 de Ag. de 2014
        
      Editada: Amir
      
 el 5 de Ag. de 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 comentarios
Ver también
Categorías
				Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


