Elegant way to know in which iteration of for I am
    9 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
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 commentaires
Réponses (3)
  dpb
      
      
 le 23 Juil 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 commentaires
  dpb
      
      
 le 23 Juil 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
  ...
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



