can't do this

1 回表示 (過去 30 日間)
Tom
Tom 2012 年 1 月 8 日
can't do this
Hi, I'm attempting nested for loops and failing miserably.
Here's my code: -
close all;
clear all;
l=50;R=100;T=68;m=0.000125;w0=0.1;t=0;
mu=m/l;c=T/mu;
r=2;x0=l/r;
iter=1;
for x=1:33;
iter=1;
for n=1:5000;
wxt=((4*w0)/pi)*exp(-R*t)*((l/(pi*n^2*x0))*sin((n*pi*x0)/l)-(1/n)*cos((n*pi*x0)/l)+(l/(2*n*x0))*cos((n*pi*x0)/l))*sin((n*pi*x)/l)*cos((c*n*pi*t)/l);
wxtrec(iter)=wxt;
iter=iter+1;
end
w=sum(wxtrec)
wrec(iter)=w;
iter=iter+1;
end
plot(x,wrec)
For the first outer loop run (x=1), I want the inner loop to do 5000 circuits, then I want the sum of that result. Then I want it to go around again 5000 times for x=2, taking a sum of that result etc.
Once I have 33 summed results, I want to plot those sums against x
  1 件のコメント
Image Analyst
Image Analyst 2012 年 11 月 3 日
Next time, could you pick a more meaningful subject line than "can't do this"?

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

採用された回答

Walter Roberson
Walter Roberson 2012 年 1 月 8 日
With minimal changes. Improvements are possible.
close all;
clear all;
l=50;R=100;T=68;m=0.000125;w0=0.1;t=0;
mu=m/l;c=T/mu;
r=2;x0=l/r;
iter=1;
for x=1:33;
iter=1;
for n=1:5000;
wxt=((4*w0)/pi)*exp(-R*t)*((l/(pi*n^2*x0))*sin((n*pi*x0)/l)-(1/n)*cos((n*pi*x0)/l)+(l/(2*n*x0))*cos((n*pi*x0)/l))*sin((n*pi*x)/l)*cos((c*n*pi*t)/l);
%wxtrec(iter)=wxt;
wxtrec(n)=wxt; %NEW
iter=iter+1;
end
w=sum(wxtrec)
%wrec(iter)=w;
wrec(x)=w; %NEW AND IMPROVED
iter=iter+1;
end
plot(x,wrec)
  2 件のコメント
Tom
Tom 2012 年 1 月 9 日
Hi thanks for answering. The code returns a message about subscript indices having to be either real positive integers or logicals. Should I be changing something?
Walter Roberson
Walter Roberson 2012 年 1 月 9 日
Sorry, I had a typo which I have now corrected.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by