Getting rid of a for loop
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    jacob Mitch
 el 19 de Oct. de 2019
  
    
    
    
    
    Comentada: jacob Mitch
 el 20 de Oct. de 2019
            If I have my code as 
function [value1, value2] = scope(input)
c=1;
x=length(input);
    for z=2:x
        if z==x
           break
        elseif input(z-1)>input(z) && input(z)<input(z+1)
         value1(c,1)=z;
         value2(c,1)=input(z);
         c=c+1;
        end
    end
Is it possible to get rid of the for look so the function runs without loops. Thank you.
0 comentarios
Respuesta aceptada
  Walter Roberson
      
      
 el 19 de Oct. de 2019
           value1 = find(input(1:end-2) > input(2:end-1) & input(2:end-1) < input(3:end)) + 1;
  value2 = input(value1);
Más respuestas (2)
  Turlough Hughes
      
 el 19 de Oct. de 2019
        
      Editada: Turlough Hughes
      
 el 19 de Oct. de 2019
  
      The following should do the job. 
ind=input(1:end-2)>input(2:end-1) & input(2:end-1)<input(3:end);
ind=[false; ind; false]; % If input is a row vector just remove to semi-colons here.
value1=find(ind);
value2=input(ind);
0 comentarios
  Steven Lord
    
      
 el 20 de Oct. de 2019
        You're looking for a local minimum in your vector input? [I would choose a different name, BTW, since input already has a meaning.] If so and you're using release R2017b or later use islocalmin.
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



