z=sqrt(-1)*imagz; handles.z=z; (2)、发电机阻抗录入 g_z=handles.g_z; B=ones(10,10);
B=str2num(get(handles.fadian,'String')); set(handles.g_z,'Data',B); handles.g_z=g_z; (3)、发电机电压录入 g_v=handles.g_v; C=ones(10,10);
C=str2num(get(handles.fadianv,'String')); set(handles.g_v,'Data',C); handles.g_v=g_v; (4)、节点漏抗导纳录入 louy=handles.louy; loukang=handles.loukang; H=ones(10,10);
H=str2num(get(handles.loukang,'String')); set(handles.louy,'Data',H); handles.louy=louy; handles.loukang=loukang;
3、计算模块:
j=str2num(get(handles.judge,'String')); if j==1
F=str2num(get(handles.edit2,'String')); z=zeros(10,10); z=sqrt(-1)*F; G=zeros(10,10);
G=str2num(get(handles.fadian,'String')); g_z=G;
26
H=zeros(10,10);
H=str2num(get(handles.fadianv,'String')); g_v=H;
S=zeros(10,10);
S=str2num(get(handles.loukang,'String')); loukang=S; else
imagz=handles.imagz; %读取各类参数 g_z=handles.g_z; g_v=handles.g_v;
loukang = handles.loukang; z=sqrt(-1)* imagz; end
n=str2num(get(handles.jiedian,'String')); %n与f直接从文本框中提取
f=str2num(get(handles.duanludian,'String')); p=str2num(get(handles.p,'String')); q=str2num(get(handles.q,'String')); Y=zeros(n,n); %节点导纳矩阵 V=zeros(1,n); %节点电压矩阵 I=zeros(n,n); %支路电流矩阵
IO=zeros(1,n); %发电机支路电流矩阵 for i=1:n %以下生成节点导纳矩阵 for j=1:n if z(i,j)~=0
Y(i,i)=Y(i,i)+1/z(i,j); end end end
if q>1 %考虑漏抗导纳影响 for qq=1:q-1 i=loukang( qq ,1);
27
Y(i,i)=Y(i,i)+sqrt(-1)*loukang(qq,2); end end
for pp=1:p-1 %考虑发电机影响 i=g_z(pp,1);
Y(i,i)=Y(i,i)-sqrt(-1)/g_z(pp,2); IO(i)=-sqrt(-1)*g_v(pp)/g_z(pp,2); end
for i=1:n %计算非对角线元素 for j=i+1:n if z(i,j)==0 Y(i,j)=0;
else Y(i,j)=-1/z(i,j); end
Y(j,i)=Y(i,j); end end
Z=inv(Y); %节点阻抗矩阵生成 for i=1:n %计算各节点初始电压 for pp=1:p-1 j=g_z(pp,1);
V(i)=V(i)+Z(i,j)*IO(j); end end
If=V(f)/Z(f,f); %计算短路点电流 for i=1:n %计算各节点电压 V(i)=V(i)-If*Z(i,f);
if abs(V(i))<1*10^-6 %对于短路点可以认为其电压为0 V(i)=0; end end
for i=1:n %计算各支路电流
28
for j=1:n
I(i,j)=(V(i)-V(j))/z(i,j); end end
Y=imag(Y); %全部求模,便于显示 Z=imag(Z); If=imag(If); I=imag(I);
set(handles.If_disp,'String',num2str(If)); %显示电流、电压等结果 set(handles.current,'Data',I); set(handles.voltage,'Data',V'); set(handles.y,'Data',Y); set(handles.z,'Data',Z);
handles.If=If; %存储,为其他函数调用做准备 handles.I=I; handles.V=V; handles.Y=Y; handles.Z=Z;
guidata(hObject,handles);
4、保存结果模块
保存为txt,有文字注释:
j=str2num(get(handles.judge,'String')); if j==1
F=str2num(get(handles.edit2,'String')); imagz=zeros(10,10); imagz=F; z=zeros(10,10); z=sqrt(-1)*F; G=zeros(10,10);
G=str2num(get(handles.fadian,'String')); g_z=G;
29
H=zeros(10,10);
H=str2num(get(handles.fadianv,'String')); g_v=H; gg=[g_z g_v];
n=str2num(get(handles.jiedian,'String')); %n与f直接从文本框中提取
f=str2num(get(handles.duanludian,'String')); p=str2num(get(handles.p,'String')); q=str2num(get(handles.q,'String')); If=handles.If; I=handles.I; V=handles.V; Y=handles.Y; Z=handles.Z; L=ones(10,10);
L=str2num(get(handles.loukang,'String')); loukang=L; else
n=str2num(get(handles.jiedian,'String')); %读取各种网络参数和计算结果
f=str2num(get(handles.duanludian,'String')); p=str2num(get(handles.p,'String')); g_z=handles.g_z; g_v=handles.g_v; gg=[g_z g_v];
loukang=handles.loukang;
q=str2num(get(handles.q,'String')); imagz=handles.imagz; If=handles.If; I=handles.I; V=handles.V; Y=handles.Y;
30