what is mistake in my matlab code
2 次查看(过去 30 天)
显示 更早的评论
Ybusn(linedata)=
Columns 1 through 5
14.7752 - 6.4985i 0.0000 + 0.0000i 0.0000 + 0.0000i -14.7752 + 6.4985i 0.0000 + 0.0000i
0.0000 + 0.0000i 14.7752 - 6.4985i 0.0000 + 0.0000i 0.0000 + 0.0000i -14.7752 + 6.4985i
0.0000 + 0.0000i 0.0000 + 0.0000i 14.7752 - 6.4985i 0.0000 + 0.0000i 0.0000 + 0.0000i
-14.7752 + 6.4985i 0.0000 + 0.0000i 0.0000 + 0.0000i 26.1902 - 9.6810i -11.4150 + 3.1825i
0.0000 + 0.0000i -14.7752 + 6.4985i 0.0000 + 0.0000i -11.4150 + 3.1825i 37.6052 -12.8635i
0.0000 + 0.0000i 0.0000 + 0.0000i -14.7752 + 6.4985i 0.0000 + 0.0000i -11.4150 + 3.1825i
Column 6
0.0000 + 0.0000i
0.0000 + 0.0000i
-14.7752 + 6.4985i
0.0000 + 0.0000i
-11.4150 + 3.1825i
26.1902 - 9.6810i
phi =
0.9840 - 0.0134i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.9808 - 0.0125i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 0.9795 - 0.0122i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -0.0000 - 0.0000i
C =
1.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 1.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 1.0000 + 0.0000i 0.0000 + 0.0000i
-0.4669 + 0.0010i -0.4669 + 0.0010i -0.4669 + 0.0010i -0.4669 + 0.0010i
-0.2139 - 0.0103i -0.2139 - 0.0103i -0.2139 - 0.0103i -0.2139 - 0.0103i
-0.3193 + 0.0093i -0.3193 + 0.0093i -0.3193 + 0.0093i -0.3193 + 0.0093i
Zbus=1/Ybus;
PG1=0.0923;
PG2=0.1368; %sau nay chinh lai de chon nut dieu chinh cong suat phat
PG3=0.0792;
Pgg=[PG1,PG2,PG3,1];
%tinh dong dien nhanh
e=ybusn(linedata);
linebranch=zeros(nbr,3);
Ig=phi*Pgg';
Ibus=C*Ig;
V=Zbus*Ibus;
for k=1:nbr
if nl(k)>0 && nr(k)>0
Ibranch(k)=abs(-(V(nl(k))-V(nr(k)))*e(nl(k),nr(k)));
end
end
Ibranch;
linebranch(:,1)=linedata(:,1);
linebranch(:,2)=linedata(:,2);
linebranch(:,3)=Ibranch';
disp([ ' nl nr |I|' ]);
disp([linebranch]);
%Kiem tra dong nhanh
nbr=length(linedata(:,1));
Imax=linedata(:,7);
flag=0;
niter=0;
n=0
while (flag==0&&niter<90)
for n=1:nbr
if linebranch(n)>Imax(n)
niter=niter+1;
PG2=PG2-0.001;
Pgg=[PG1,PG2,PG3,1];
Ig=phi*Pgg';
Ibus=C*Ig;
V=Zbus*Ibus;
for k=1:nbr
if nl(k)>0 && nr(k)>0
Ibranch(k)=abs(-(V(nl(k))-V(nr(k)))*e(nl(k),nr(k)));
end
end
else
flag=1;
end
end
end
Ibranch
I changed my new code. It work ok but the loop is not stop when Ibracnh<Imax.Please post your answer in a new answer let me know you online and answer you soon, don't post in comment.
4 个评论
采纳的回答
Kuifeng
2016-4-2
编辑:Walter Roberson
2016-4-2
i think maybe your loop never finishes.... endlesss loop in the 'Ibranch'
k = 1;
while k<=nbr % k run in the number of branch
while Ibranch(k)>Imax(k) %to check Ibranh in each of branch
PG2=PG2-0.001;
Pgg=[0.0923,PG2,0.0792,1];
V=Zbus*(C*(phi*Pgg'));
k=k+1;
% caculate again the Ibranch in branch;
end
end
更多回答(2 个)
Walter Roberson
2016-4-2
Your code has
while Ibranch(k)>Imax(k) %to check Ibranh in each of branch
but inside the "while" you do not appear to change Ibranch or Imax or k. If the condition becomes true once, then it appears that you are going to get an infinite loop.
However, you do have the line of code
caculate again the Ibranch in branch;
which, due to MATLAB's command / function equivalence, would be the same as calling
calculate('again', 'the', 'Ibranch', 'in', 'branch')
and we have no information about any function named "calculate" or how that function is going to modify Ibranch or Imax . It could happen. It just looks unlikely.
5 个评论
Walter Roberson
2016-4-2
Your current posted code has an outer loop of "for k=1:nbr " and also has that as an inner loop. If you need an inner loop then you must use a different variable name for the index.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!