if condition is true record value from next row

2 次查看(过去 30 天)
I am looking to latency of a trial IF the previous row was incorrect "0" and the current row is correct "1" to answer the question to people answer faster if they get the previous question wrong
I have tried using the code below
tabm.Error = tabm.Correct;
%tabm.Error is a new column I am trying to create
if istable (tabm.Error)
[r,c] = size(tabm.Error);
for i=1:r
A = tabm.Correct(r)==0;
B = tabm.Correct(r+1)==1;
if A && B
tabm.Error = 1;
else tabm.Error = 0;
end
end
end
Currently, the Error column is just a copy of the Correct Column
Thank you!
  1 个评论
dpb
dpb 2021-11-15
You didn't subscript the Error variable in the assignment so each assignment writes the whole vector of 1|0.
Excepting your loop over i doesn't use i at all; every refererence to tabm.Correct is to the last and (non-existant) last + one elements. That looks like should have error'ed on an out-of-bounds reference.
Try something more like
ix=[0;diff(tabm.Correct)==1];
tabm.Error=ix;

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by