필터 지우기
필터 지우기

How to put for loop outcome into 1 column in right order

조회 수: 1 (최근 30일)
MadjeKoe
MadjeKoe 2020년 10월 26일
댓글: MadjeKoe 2020년 10월 26일
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{:}];

답변 (1개)

Image Analyst
Image Analyst 2020년 10월 26일
편집: Image Analyst 2020년 10월 26일
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
Image Analyst
Image Analyst 2020년 10월 26일
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
MadjeKoe 2020년 10월 26일
No I do not want to overwrite them. I want each response error value to be in the row with its corresponding trial (in column res(:,9)). Because I had to calculate the errors based on 4 different targets, there are 4 different groups and I can't get the response errors to match the correct trial.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by