How to put for loop outcome into 1 column in right order
Show older comments
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{:}];
Answers (1)
Image Analyst
on 26 Oct 2020
Edited: Image Analyst
on 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 Comments
MadjeKoe
on 26 Oct 2020
Image Analyst
on 26 Oct 2020
Did you overlook my last sentence? Here it is again:
"If that doesn't work, please attach your variables in a .mat file."
save('answers.mat', 'S');
MadjeKoe
on 26 Oct 2020
Image Analyst
on 26 Oct 2020
Just look at the sizes of each variable in your loop and try to understand what's going on. YOu're creating variables of lots of different sizes so err is not the same number of rows as res.
MadjeKoe
on 26 Oct 2020
Image Analyst
on 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?
MadjeKoe
on 26 Oct 2020
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!