How to put for loop outcome into 1 column in right order
    4 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hi guys, I made the following for loop where I calculated the response errors for each target. Now instead of putting them in a new matrix in 4 different columns, I want to put the error responses (err) as 1 column in the old matrix (res), in the correct order (so each error response matches its trials). Can somebody explain how to do this?
res = S.res;
trials = res(:,1);
targets = res(:,7);
responses = res(:,8);
oria = [3,4,5,6];
tar = [1,2,3,4];
num = numel(oria); 
out = cell(1,num);
for k = 1:num
    tarsel = targets==tar(k);
    resp = responses(tarsel);
    orib  = res(tarsel,oria(k));
    err = resp - orib;
    err(err<-90) = err(err<-90)+180;
    err(err>90)  = err(err>90)-180;
    out{k} = err;
end 
out = [out{:}];
0 commentaires
Réponses (1)
  Image Analyst
      
      
 le 26 Oct 2020
        
      Modifié(e) : Image Analyst
      
      
 le 26 Oct 2020
  
      Can't you just say
res(:, 1) = err(:);
inside the loop?  But every iteration will overwrite column 1 of course so not sure why, or if, you want that.
If that doesn't work, please attach your variables in a .mat file.
7 commentaires
  Image Analyst
      
      
 le 26 Oct 2020
				You can overwrite 2500 values of a longer vector with 2500 values of a shorter vector.  Is that what you want to do?  If so, why?  And what do you want to do with the other 7500 values?  Just leave them there as-is?  Or erase them to zeros?
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!