Help with For-Loop question?

1 回表示 (過去 30 日間)
Abdullah Tamimi
Abdullah Tamimi 2011 年 10 月 5 日
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
Walter Roberson 2011 年 10 月 5 日
Duplicate is at http://www.mathworks.com/matlabcentral/answers/17480-help-with-for-loop-question

サインインしてコメントする。

採用された回答

Robert
Robert 2011 年 10 月 5 日
The answer above doesn't achieve what you were asking for. Try this:
N=10;
x=zeros(N,numel(pi/5:pi/5:2*pi));
x(1,:)=pi/5:pi/5:2*pi;
for j=2:N
x(j,:)=sin(x(j-1,:));
end
plot(x(1,:),x')
  4 件のコメント
Fangjun Jiang
Fangjun Jiang 2011 年 10 月 5 日
x(1,:) is all the data in the 1st row of the matrix x.
x(j,:) is all the data in the jth row of the matrix x.
This link might be helpful for you. It's also available in your local copy of the MATLAB documentation. Type doc to start browsing.
http://www.mathworks.com/help/techdoc/math/f1-85462.html
Walter Roberson
Walter Roberson 2011 年 10 月 5 日
We, the adherents of Computational Satreism, believe that MATLAB colons are "things in themselves" whose meaning can never be understood by the reflective consciousness. The colons just *are*, and can be used, but no-one can ever understand their true nature.

サインインしてコメントする。

その他の回答 (1 件)

Fangjun Jiang
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 件のコメント
Sean de Wolski
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
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeGet Started with MATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by