Elegant way to know in which iteration of for I am
    10 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
At the moment I have something of the sort:
n_runs=0;
N_categories=[17, 8];
for protocol_ID=[4 1 7 6]
    for t=1:nTrialsPerBlock
        n_runs=n_runs+1;
        if n_runs > N_categories
           (--code--)
        end
        (---code---)
    end
end
What I am looking for is a way to evaluate in which protocol the first for is (meaning if it is in 4, 1, 7 or 6) and then if it is in the first two, should be n_runs > N_categories( 1 ) and if it's the second pair N_categories( 2 ).
I am trying to code it so that it determines in which protocol I am, and according to that evaluate if the number of runs is bigger than the corresponding N_categories. Note that protocol_ID could have any of the numbers (4,1,7,6) in no particular order.
I am not seeing a better way than a bunch of switches/if's. Anyone could give a hand? :)
3 comentarios
Respuestas (3)
  dpb
      
      
 el 23 de Jul. de 2014
        ...Can a switch work if I do:
switch protocol_ID
  case 1 || 4
  case 6 || 7
Not in that exact syntax, no, but
switch protocol_ID
  case {1, 4}
    ...
  case {6, 7}
    ...
  otherwise
    ...
doc switch % etc., for details...
0 comentarios
  dpb
      
      
 el 23 de Jul. de 2014
        I don't follow what the end objective is from the description, but to know which iteration numerically is being evaluated you've got the indicator variable being incremented in the wrong place--
iter=0;
N_categories=[17, 8];
for protocol_ID=[4 1 7 6]
  iter=iter+1;
  if round(iter/2)==1
    % stuff for first two
  else
    % second two
  end
  ...
1 comentario
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!