indices must either be real?
조회 수: 1 (최근 30일)
이전 댓글 표시
at line 101 i get this error dont know why??????
% Radial network-reactive and active load-current
clear all;
clc;
%V:network voltage
%q:number of loads
%w:number of lines
%f:frequency
%real:Real section of load current
%image:Image section of load current
%a:matrix of load current
%L:inductance of each line (H/m)
%L_line:inductance of total line
%X:reactance of each line
%R:Resistance of each line
%I:Current of each line
%SLoad:power of each load
%P_Load:Active power of each load
%Q_Load:Reactive power of each load
%P_loss_line:Active power loss of each line
%Q_loss_line:Reactive power loss of each line
%P_loss_total:Active power loss of total network
%Q_loss_total:Reactive power loss of total network
%P_input:Input active power
%Q_input:Input reactive power
V=input('insert voltage of network(V)= ');
f=input('insert frequency of network(Hz)=');
q=input('insert number of load=');
w=q;
for n=1:q
disp('Load')
disp(n)
real(n,1)=input('insert Real current of load (A)= ');
image(n,1)=input('insert Image current of load (A)= ');
end
a=real+i*image;
disp('Guide')
disp(' if you want Specific electrical conductivity (s/mm^2), insert 1, and if you want Specific electrical resistance (ohm.mm^2), insert 2')
e=input('Specific electrical conductivity or Specific electrical resistance of lines= ');
if e==1
t=input('insert Specific electrical conductivity (s/mm^2)= ');
end
if e==2
t=input('insert Specific electrical resistance (ohm.mm^2)= ');
end
A=input('insert area of lines (mm^2)= ');
L=input('insert inductance of line(H/m)=');
for n=1:w
disp('Line')
disp(n)
l(n,1)=input('insert lenght of line(m)= ');
end
if e==1
for n=1:w
R(n,1)=l(n,1)/(t*A);
end
end
if e==2
for n=1:w
R(n,1)=t*l(n,1)/(A);
end
end
for n=1:w
L_line(n,1)=L*l(n,1);
end
for n=1:w
X(n,1)=2*pi*f*L_line(n,1);
end
I(n,1)=0;
for n=1:w
for m=n:q
I(n,1)=I(n,1)+a(m,1);
end
end
for n=1:w
deltaV(n,1)=2*(R(n,1)+i*X(n,1))*I(n,1);
end
voltage_bus(1,1)=V;
for n=2:q+1
voltage_bus(n,1)=voltage_bus(n-1,1)-deltaV(n-1,1);
end
voltage_Regulation=100*((V-abs(voltage_bus(q+1,1)))/abs(voltage_bus(q+1,1)));
for n=1:q
SLoad(n,1)=voltage_bus(n+1,1)*conj(a(n,1));
end
for n=1:w
P_loss_line(n,1)=2*R(n,1)*(abs(I(n,1))^2);
end
P_loss_total=0;
for n=1:w
P_loss_total=P_loss_total+P_loss_line(n,1);
end
for n=1:q
Q_loss_line(n,1)=2*X(n,1)*(abs(I(n,1))^2);
end
Q_loss_total=0;
for n=1:w
Q_loss_total=Q_loss_total+Q_loss_line(n,1);
end
P_Load=0;
Q_Load=0;
P_Load=real(SLoad);
Q_Load=imag(SLoad);
P_Load_total=sum(P_Load);
Q_Load_total=sum(Q_Load);
P_input=P_Load_total+P_loss_total;
Q_input=Q_Load_total+Q_loss_total;
Efficiency=P_Load_total/P_input;
clc;
disp('Resisrance(R) of each line:')
disp(R)
disp('reactance(X) of each line:')
disp(X)
disp('Current of each line:')
disp(I)
disp('Voltage drop of each line:')
disp(deltaV)
disp('voltage of each bus:')
disp(voltage_bus)
disp('voltage Regulation(%)')
disp(voltage_Regulation)
disp('S of each load(VA):')
disp(SLoad)
disp('Active power(P) of each load(W):')
disp(P_load)
disp('Reactive power(Q) of each load(VAR):')
disp(Q_load)
disp('Power loss of each line(W)')
disp(P_loss_line)
disp('Reactive power of each line(VAR)')
disp(Q_loss_line)
disp('Total power loss(W):')
disp(P_loss_total)
disp('Total reactive power loss(VAR):')
disp(Q_loss_total)
disp('Input power(W):')
disp(P_input)
disp('Input reactive power(VAR):')
disp(Q_input)
disp('Efficiency:')
disp(Efficiency)
댓글 수: 0
채택된 답변
DGM
2023년 6월 24일
편집: DGM
2023년 6월 24일
You're creating a variable called real, which conflicts with the function real(). Consequentially, when you try to call real() on a complex scalar, you're actually trying to index into the array of the same name using a complex-valued index.
Simply name your variable something else.
댓글 수: 2
Image Analyst
2023년 6월 24일
If this Answer solves your original question, then could you please click the "Accept this answer" link to award the answerer with "reputation points" for their efforts in helping you? They'd appreciate it. Thanks in advance. 🙂 Note: you can only accept one answer (so pick the best one) but you can click the "Vote" icon for as many Answers as you want. Voting for an answer will also award reputation points.
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!