can't do this
1 回表示 (過去 30 日間)
古いコメントを表示
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
2012 年 11 月 3 日
Next time, could you pick a more meaningful subject line than "can't do this"?
採用された回答
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 件のコメント
その他の回答 (0 件)
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!