From 0c9c2e2eb727ed9df7f76798ad4879ca4f95113a Mon Sep 17 00:00:00 2001 From: "dugg@lab-desk" Date: Mon, 3 Nov 2014 11:07:25 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E4=BA=86=E7=94=BB=E6=9F=B1?= =?UTF-8?q?=E7=8A=B6=E5=9B=BE=E7=9A=84=E5=87=BD=E6=95=B0=202.=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E7=BB=93=E6=9E=9C=E5=B1=95=E7=A4=BA=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dugg@lab-desk --- barPlot.m | 13 +++++++++++++ run.m | 50 +++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 barPlot.m diff --git a/barPlot.m b/barPlot.m new file mode 100644 index 0000000..ba7b01e --- /dev/null +++ b/barPlot.m @@ -0,0 +1,13 @@ +function barPlot( data, split_number,xWord,yWord,figTitle) +ymin=min(data); +ymax=max(data); +% split_number=10; +x=linspace(ymin,ymax,split_number); %将最大最小区间分成split_number个等分点(19等分),然后分别计算各个区间的个数 +yy=hist(data,x); %计算各个区间的个数 +% yy=yy/(sum(yy)*(ymax-ymin)/split_number); %计算各个区间的个数,除以总面积,总面积计算的方式为:所有小分割的面积的和即: +bar(x,yy) %画出概率密度分布图 +xlabel(xWord); +ylabel(yWord); +title(figTitle); +end + diff --git a/run.m b/run.m index 356f77b..d64e157 100644 --- a/run.m +++ b/run.m @@ -1,5 +1,6 @@ %% 利用先把负荷转换为电流的方法。这个方法要求知道电压量。 % +close all clc clear lineZ=readLineZ('feeder13\lineParameter.txt'); @@ -197,8 +198,8 @@ sigmaI1=normrnd(0,sigma,length(Loadi),1); I1measurement=mIf1(Loadi).*(1+sigmaI1);%测量值是等效发电机电流 wI1r=abs( real(mIf1(Loadi).*sigmaI1) ); wI1i=abs( imag(mIf1(Loadi).*sigmaI1) ); -[ V1r,V1i,I1r,I1i ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1 ); -f=sum(([real(I1measurement);imag(I1measurement)]-[I1r;I1i]).^2)+sum((real(rV1)-V1r).^2)+sum((imag(rV1)-V1i).^2); +% [ V1r,V1i,I1r,I1i ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1 ); +% f=sum(([real(I1measurement);imag(I1measurement)]-[I1r;I1i]).^2)+sum((real(rV1)-V1r).^2)+sum((imag(rV1)-V1i).^2); % fprintf('目标值 %f\n',full(f)); %% 算负序的 fprintf('负序\n'); @@ -219,8 +220,8 @@ sigmaI2=normrnd(0,sigma,length(Loadi),1); I2measurement=mIf2(Loadi).*(1+sigmaI2);%测量值是等效发电机电流 wI2r=abs( real(mIf2(Loadi).*sigmaI2) ); wI2i=abs( imag(mIf2(Loadi).*sigmaI2) ); -[ V2r,V2i,I2r,I2i ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0 ); -f=sum(([real(I2measurement);imag(I2measurement)]-[I2r;I2i]).^2)+sum((real(rV2)-V2r).^2)+sum((imag(rV2)-V2i).^2); +% [ V2r,V2i,I2r,I2i ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0 ); +% f=sum(([real(I2measurement);imag(I2measurement)]-[I2r;I2i]).^2)+sum((real(rV2)-V2r).^2)+sum((imag(rV2)-V2i).^2); % fprintf('目标值 %f\n',full(f)); %% 算零序 fprintf('零序\n'); @@ -241,8 +242,25 @@ sigmaI0=normrnd(0,sigma,length(Loadi),1); I0measurement=mIf0(Loadi).*(1+sigmaI0);%测量值是等效发电机电流 wI0r=abs( real(mIf0(Loadi).*sigmaI0) ); wI0i=abs( imag(mIf0(Loadi).*sigmaI0) ); -[ V0r,V0i,I0r,I0i ]=IPMLoop(V0measurement,wV0r,wV0i,I0measurement,wI0r,wI0i,BalI0r,BalI0i,busNum,Loadi,fsY00,Balance,0 ); -f=sum(([real(I0measurement);imag(I0measurement)]-[I0r;I0i]).^2)+sum((real(rV0)-V0r).^2)+sum((imag(rV0)-V0i).^2); +% matlabpool local 3 +tic +for II=1:3 + + if II==1 + [ V1r,V1i,I1r,I1i ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1 ); + end + if II==2 + [ V2r,V2i,I2r,I2i ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0 ); + end + if II==3 + [ V0r,V0i,I0r,I0i ]=IPMLoop(V0measurement,wV0r,wV0i,I0measurement,wI0r,wI0i,BalI0r,BalI0i,busNum,Loadi,fsY00,Balance,0 ); + end + +end +toc +% matlabpool close + +% f=sum(([real(I0measurement);imag(I0measurement)]-[I0r;I0i]).^2)+sum((real(rV0)-V0r).^2)+sum((imag(rV0)-V0i).^2); % fprintf('目标值 %f\n',full(f)); %% 把三序合成三相 % 三相电压 @@ -257,7 +275,21 @@ SEIf1=I1r+1j*I1i; SEIf2=I2r+1j*I2i; SEIpABC=full(Tf2p*conj([SEIf0';SEIf1(1:3)';SEIf2'])); %看一下差多少 -(full(abs(VoltpABC))-abs(SEVoltpABC))./abs(SEVoltpABC)*100 - +VError=(full(abs(VoltpABC))-abs(SEVoltpABC))./abs(VoltpABC)*100; +VError=reshape(VError,size(VError,1)*size(VError,2),1); +barPlot( VError, 10,['相对误差%'],['分布密度'],['电压幅值']); % 三相负荷 -SEVoltpABC(:,setxor(1:size(SEVoltpABC,2),Balance)).*conj(-SEIpABC) \ No newline at end of file +rThreeLoad=[ phaseASpotLoadP'+1j*phaseASpotLoadQ'; + phaseBSpotLoadP'+1j*phaseBSpotLoadQ'; + phaseCSpotLoadP'+1j*phaseCSpotLoadQ'; + ]; +rThreeLoad=rThreeLoad(:,setxor(1:size(SEVoltpABC,2),Balance)); +SEThreeLoad=SEVoltpABC(:,setxor(1:size(SEVoltpABC,2),Balance)).*conj(-SEIpABC); +phaseLoadPError=real(rThreeLoad-SEThreeLoad)./real(rThreeLoad)*100; +phaseLoadQError=imag(rThreeLoad-SEThreeLoad)./imag(rThreeLoad)*100; +phaseLoadPError=reshape(phaseLoadPError,size(phaseLoadPError,1)*size(phaseLoadPError,2),1); +phaseLoadQError=reshape(phaseLoadQError,size(phaseLoadQError,1)*size(phaseLoadQError,2),1); +figure() +barPlot( phaseLoadPError, 10,['相对误差%'],['分布密度'],['有功负荷误差']); +figure() +barPlot( phaseLoadQError, 10,'相对误差%','分布密度','无功负荷误差'); \ No newline at end of file