Help with For-Loop question?
显示 更早的评论
I keep getting the same error, about not being any real or logical answer.
here is the question; Create a time vector x = 0:2*pi. Using a for-loop, plot ten different curves on the same graph where the first curve is x1 = sin(x), the second curve is x2 = sin(x1), the third curve is x3 = sin(x2) and so on. Note that by using a for-loop it is not necessary to create ten separate variables to solve this problem.
Here is what I've been entering
x=0
>> for i=[pi/5:pi/5:2*pi]
x(i)=sin(x(i-(pi/5)))
end
??? Attempted to access x(0); index must be a positive integer or logical.
Any help would be appreciated
1 个评论
Walter Roberson
2011-10-5
Duplicate is at http://www.mathworks.com/matlabcentral/answers/17480-help-with-for-loop-question
采纳的回答
更多回答(1 个)
Fangjun Jiang
2011-10-5
When you use i=[pi/5:pi/5:2*pi], i is a vector with increment as pi/5, hardly any of the element is integer, you can not use i as the index of a vector as x(i). Try something like,
N=10;
x=zeros(N,1);
for k=1:N
a=k*pi/5;
x(k)=sin(a);
end
i is the square root of -1 so avoid using i. Try this:
clear i
i
4 个评论
Abdullah Tamimi
2011-10-5
Sean de Wolski
2011-10-5
it's preallocating for speed. You create the full vector at once, the size you need it, and then populate it as the for loop runs.
Sean de Wolski
2011-10-5
for your own knowledge, you should just type it at the command line and see what it creates
Fangjun Jiang
2011-10-5
Without the x=zeros(N,1) ahead of the for-loop, the code still works. It's just the vector x will increase size at every loop. This is not efficient especially when N is large, as MATLAB likes to store vector or matrix in a continuous memory location.
类别
在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!