function [ fs30,fs31,fs32,phaseABCY ] = lineWithConfig(setIJ,nodeNum,lineZ,lines,config,baseHighU ) phase3Entry=find(lines(:,1)==config); phase3Line=lines(phase3Entry,:); phase3Line(:,4)=phase3Line(:,4)/1000; entry=find(lineZ(:,1)==config); if isempty(entry) fs30=0; fs31=0; fs32=0; phaseABCY=0; fprintf('warning: line type %d not found.\n',config) return; end phase3R=lineZ(entry+1:entry+3,:); phase3X=lineZ(entry+5:entry+7,:); phase3B2=lineZ(entry+9:entry+11,:); phase3Z=phase3R+1j*phase3X; phase3Y=inv(phase3Z); %标幺值 baseS=1; baseY=baseS/(baseHighU^2); phase3Y=phase3Y/baseY; diagEle=diag(phase3Y);%对角元素 diagEle=sum(diagEle)/3; offDiagEle=phase3Y-diag(diag(phase3Y)); offDiagEle=sum(sum(offDiagEle))/6; %让对角和非对角相等 phase3Y(1,1)=diagEle; phase3Y(1,2)=offDiagEle; phase3Y(2,1)=offDiagEle; phase3Y(3,1)=offDiagEle; phase3Y(1,3)=offDiagEle; phase3Y(1,3)=phase3Y(1,2); phase3Y(3,1)=phase3Y(2,1); phase3Y(3,2)=phase3Y(3,1); phase3Y(2,3)=phase3Y(1,3); phase3Y(2,2)=phase3Y(1,1); phase3Y(3,3)=phase3Y(1,1); %进行Fortescue变换 %直接写结果 a=exp(1j*2*pi/3); Tp2f=1/3*[1 1 1; 1 a a^2; 1 a^2 a]; Tf2p=inv(Tp2f); % % Tf2p=[1 1 1; % 1 a^2 a; % 1 a a^2]; % fs3Y=Tp2f*phase3Y*Tf2p; % Zl=phase3Y(1,1); % Zm=phase3Y(2,1); Zl=diagEle; Zm=offDiagEle; fs3Y=3/3*diag([Zl+2*Zm,Zl-Zm,Zl-Zm]);%这里不是1/3,IEEE上的公式错了。 fs3Y(abs(fs3Y)<1e-5)=0; fs3Y=sparse(fs3Y); lineNodeI=zeros(length(phase3Line(:,2) ) ,1); lineNodeJ=zeros(length(phase3Line(:,2) ) ,1); for I=1:length(lineNodeI) lineNodeI(I)=nodeNum(setIJ==phase3Line(I,2) ); lineNodeJ(I)=nodeNum(setIJ==phase3Line(I,3) ); end busNum=length(nodeNum); %生成三相导纳矩阵 phaseABCY=sparse(busNum*3,busNum*3); for I=1:length(phase3Line(:,4)) [phase3Yr,phase3Yc,phase3Yv]=find(phase3Y./phase3Line(I,4)); offsetI=phase3Yr+3*(lineNodeI(I)-1); offsetJ=phase3Yc+3*(lineNodeJ(I)-1); phaseABCY=phaseABCY+sparse(offsetI,offsetJ,-phase3Yv,busNum*3,busNum*3); phaseABCY=phaseABCY+sparse(offsetJ,offsetI,-phase3Yv,busNum*3,busNum*3); %1 diagY=sum(phaseABCY(:,1:3:end),2); offsetI=1:busNum*3; offsetJ=zeros(busNum*3,1); for J=0:busNum*3-1 offsetJ(J+1)=floor(J/3)*3+1; end phaseABCY=phaseABCY-sparse(offsetI,offsetJ,diagY,busNum*3,busNum*3); %2 diagY=sum(phaseABCY(:,2:3:end),2); offsetJ=zeros(busNum*3,1); for J=0:busNum*3-1 offsetJ(J+1)=floor(J/3)*3+2; end phaseABCY=phaseABCY-sparse(offsetI,offsetJ,diagY,busNum*3,busNum*3); %3 diagY=sum(phaseABCY(:,3:3:end),2); offsetJ=zeros(busNum*3,1); for J=0:busNum*3-1 offsetJ(J+1)=floor(J/3)*3+3; end phaseABCY=phaseABCY-sparse(offsetI,offsetJ,diagY,busNum*3,busNum*3); end fs30=sparse(lineNodeI,lineNodeJ,-fs3Y(1,1)./phase3Line(:,4),busNum,busNum); fs30=fs30+sparse(lineNodeJ,lineNodeI,-fs3Y(1,1)./phase3Line(:,4),busNum,busNum); fs30=fs30-sparse(1:busNum,1:busNum,sum(fs30,2)); fs31=sparse(lineNodeI,lineNodeJ,-fs3Y(2,2)./phase3Line(:,4),busNum,busNum); fs31=fs31+sparse(lineNodeJ,lineNodeI,-fs3Y(2,2)./phase3Line(:,4),busNum,busNum); fs31=fs31-sparse(1:busNum,1:busNum,sum(fs31,2)); fs32=sparse(lineNodeI,lineNodeJ,-fs3Y(3,3)./phase3Line(:,4),busNum,busNum); fs32=fs32+sparse(lineNodeJ,lineNodeI,-fs3Y(3,3)./phase3Line(:,4),busNum,busNum); fs32=fs32-sparse(1:busNum,1:busNum,sum(fs32,2)); end