function [ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ... phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY ... cap] = dataRead(lineZ,dataFile ) data=dlmread(dataFile); baseHighU=data(1,2); fsY0=sparse(0); fsY1=sparse(0); fsY2=sparse(0); zeroEntries=find(data(:,1)==0); lines=data(zeroEntries(1)+1:zeroEntries(2)-1,:); [setIJ,nodeNum]=numberNode(lines); if size(setIJ,2)>size(setIJ,1) setIJ=setIJ'; end Balance=data(1,1); Balance=nodeNum(setIJ==Balance); %%three-phase phaseABCY=sparse(3*length(nodeNum),3*length(nodeNum)); %把线路型号都给读出来 linePar=lines(:,1); linePar=unique(linePar); for I=1:length(linePar) [fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,linePar(I),baseHighU); %phaseABCY 三相的导纳矩阵3n x 3n 维 fsY0=fsY0+fs30; fsY1=fsY1+fs31; fsY2=fsY2+fs32; phaseABCY=phaseABCY+retphaseABCY; end %% 把电容加到矩阵中 cap=data(zeroEntries(2)+1:zeroEntries(3)-1,:); if ~isempty(cap) capNode=nodeNum(ismember(setIJ,cap(:,1))); end %电容引起的电流 capG=1j*cap(:,2)/1000; % fs3Y=3/3*diag([Zl+2*Zm,Zl-Zm,Zl-Zm]);%这里不是1/3,IEEE上的公式错了。 fsY0=fsY0+sparse(capNode,capNode,capG,length(fsY0),length(fsY0)); fsY1=fsY1+sparse(capNode,capNode,capG,length(fsY1),length(fsY1)); fsY2=fsY2+sparse(capNode,capNode,capG,length(fsY2),length(fsY2)); %% spot load busNum=length(nodeNum); spotloads=data(zeroEntries(3)+1:zeroEntries(4)-1,:); spotloads(:,2:end)=spotloads(:,2:end)/1000; phaseASpotLoadP=sparse(busNum,1); phaseBSpotLoadP=sparse(busNum,1); phaseCSpotLoadP=sparse(busNum,1); phaseASpotLoadQ=sparse(length(nodeNum),1); phaseBSpotLoadQ=sparse(length(nodeNum),1); phaseCSpotLoadQ=sparse(length(nodeNum),1); phaseASpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,2); phaseBSpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,4); phaseCSpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,6); phaseASpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,3); phaseBSpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,5); phaseCSpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,7); %% 补偿电容 cap=data(zeroEntries(2)+1:zeroEntries(3)-1,:); if ~isempty(cap) capNode=nodeNum(ismember(setIJ,cap(:,1))); %数据文件中的补偿电容给的是补偿容量,要将其转换为导纳。 capB=cap(:,2:4)/1000; cap=struct(); cap.capNode=capNode; cap.capB=capB; %把补偿电容加到矩阵中。 offSet=(capNode-1)*3+1; phaseABCY=phaseABCY+sparse(offSet,offSet,1j*capB(:,1),busNum*3,busNum*3); offSet=(capNode-1)*3+2; phaseABCY=phaseABCY+sparse(offSet,offSet,1j*capB(:,2),busNum*3,busNum*3); offSet=(capNode-1)*3+3; phaseABCY=phaseABCY+sparse(offSet,offSet,1j*capB(:,3),busNum*3,busNum*3); else cap=struct(); cap.capNode=[]; cap.capB=sparse(1,3); end end