How to fix looping?
古いコメントを表示
this is my program:
v = 120;
r1 = 1.8;
x1 = 2.4;
r2 = 3.5;
x2 = 1.2;
xm = 60;
ns = 1800;
ws = 188.5;
s = (0.5:1:50)/50;
s (1) = 0.0001;
nm = (1-s)*ns;
for i = 1:51;
zf(i) =(((r2/s(i))+(j*x2))*(j*xm))/(((r2/s(i))+(j*x2))+(j*xm));
zb(i) = (((r2/(2-s(i)))+(j*x2))*(j*xm))/(((r2/(2-s(i)))+(j*x2))+(j*xm));
I(i) = v/(r1+(j*x1)+(0.5*zf(i))+(0.5*zb(i)));
PagF(i) = (abs(I(i)^2))*(0.5*real(zf(i)));
PagB(i) = (abs(I(i)^2))*(0.5*real(zb(i)));
Pag(i)=PagF(i)-PagB(i);
Tind(i) = Pag(i)/ws;
end
figure (1);
plot(nm,Tind,'Color','b','LineWidth',2.0);
grid on;
hold off;
*but after i run this program an error occurred with argument: Attempted to access s(51); index out of bounds because numel(s)=50.
Error in ==> fasbel3 at 15 zf(i) =(((r2/s(i))+(j*x2))*(j*xm))/(((r2/s(i))+(j*x2))+(j*xm));
how to fix it? please help thanks.. with sincerity :)
4 件のコメント
Craig Cowled
2013 年 5 月 15 日
Devia,
Your for _loop has 51 cycles, however, your variable _s _only has 50 elements. There are other problems with your code too. Just change the for loop to _for i = 1:50
There is no need for the semicolon at the end of a _for _statement.
Craig.
Devia Rafika Putri
2013 年 5 月 15 日
Craig Cowled
2013 年 5 月 15 日
Devia, Andrei's code is much neater. No need for a loop, just use element wise divide './'. And no, I'm not an electrical engineer. I'm a structural engineer working on experimental structural dynamics problems.
Devia Rafika Putri
2013 年 5 月 15 日
採用された回答
その他の回答 (1 件)
Yao Li
2013 年 5 月 15 日
0 投票
It seems the length of array s is 50, but you wanna call s(51) in the for loop
4 件のコメント
Yao Li
2013 年 5 月 15 日
for i=1:50
Devia Rafika Putri
2013 年 5 月 15 日
Yao Li
2013 年 5 月 15 日
Sometimes, I act as an electrical engineer. lol.
Pls. feel free to contact me if u have other questions. Email preferred.
Devia Rafika Putri
2013 年 5 月 15 日
カテゴリ
ヘルプ センター および File Exchange で Assembly についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!