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!