if inside of for loop
1 次查看(过去 30 天)
显示 更早的评论
I don't know what is wrong with this code. The code works when I don't include the if statement. Any idea?
for i = 1:3
if rt > 100 & rt < 1000
average(i) = mean(rt(cue==i))
dev(i) = std(rt(cue==i))
end
end
1 个评论
the cyclist
2018-2-19
You are leaving too much for us to guess at, which makes it difficult for us to help you.
Please describe what you mean by "doesn't work" in more detail. Does the code give an error? If so, tell us the complete error message, and which line it occurs on.
If it does not give an error, but just an unexpected result, tell us the expected and actual result.
In general, it would be better to supply code that we can actually run ourselves (e.g. by supplying the values of rt and cue.)
采纳的回答
Jan
2018-2-19
编辑:Jan
2018-2-20
Or perhaps:
match = (rt > 100 & rt < 1000);
rtx = rt(match);
cuex = cue(match);
for i = 1:3
average(i) = mean(rtx(cuex==i))
dev(i) = std(rtx(cuex==i))
end
Note that "if rt > 100 & rt < 1000" is evaluated as:
if all(rt > 100 & rt < 1000) && ~isempty(rt)
2 个评论
Jan
2018-2-20
@Alejandro: Yes, this way a typo. Inside the loop rtx and cuex are needed. I've fixed this in my answer.
更多回答(1 个)
Birdman
2018-2-19
编辑:Birdman
2018-2-19
You probably forgot subscripting of rt.
for i = 1:3
if rt(i) > 100 & rt(i) < 1000
average(i) = mean(rt(cue==i))
dev(i) = std(rt(cue==i))
end
end
2 个评论
Birdman
2018-2-20
But again
rt(cue==i)
this will result in an array. You may perhaps do it before the loop and give it subscripted to for loop as
rt=rt(cue==i);
for i=1:3
if rt(i)...
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!