继续排除一些bug

Signed-off-by: dmy@lab <dmy@lab.com>
This commit is contained in:
dmy@lab 2015-09-23 19:37:52 +08:00
parent da85b45e7e
commit 0bfd04b415
1 changed files with 34 additions and 16 deletions

View File

@ -5,15 +5,16 @@ clear
% [2]. , 线, 2012, . % [2]. , 线, 2012, .
%% %%
% %
semi_lineDistance=457;% semi_lineDistance=257;%
semi_lineCount=4;% semi_lineCount=4;%
ConductorX=[-14500,14500];%线 ConductorX=[-14500,14500];%线
ConductorY=[16500,16500];%线 ConductorY=[16500,16500];%线
CSM_N=10;%线 CSM_N=10;%线
subconductorR=30;%线
%% %%
% %
Volt=[500;500;500;500;-500;-500;-500;-500]; Volt=[500;500;500;500;-500;-500;-500;-500];
Volt=[500*ones(CSM_N,1);-500*ones(CSM_N,1)]; Volt=[500*ones(CSM_N*semi_lineCount,1);-500*ones(CSM_N*semi_lineCount,1)];
%线线线 %线线线
% %
arc=2*pi/semi_lineCount; arc=2*pi/semi_lineCount;
@ -21,21 +22,28 @@ CSM_arc=2*pi/CSM_N;
%线线 %线线
R=semi_lineDistance/2/sin(arc/2); R=semi_lineDistance/2/sin(arc/2);
% %
r1=200; r1=2;
error=10000; error=10000;
step=1/20; step=1/20;
maxLoop=round((R-r1)/step); maxLoop=round((subconductorR-r1)/step);
for Loop=1:maxLoop; for Loop=1:maxLoop;
simulationChargePos=ones(CSM_N,1); simulationChargePos=ones(CSM_N,1);
for I=1:CSM_N simulationChargeAPos=[];
simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*(R+r1);% simulationChargeBPos=[];
for sC=1:semi_lineCount
for I=1:CSM_N
% simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*(R+r1);%
simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*r1;%
end
simulationChargeAPos=[simulationChargeAPos;simulationChargePos+ConductorX(1)+1j*ConductorY(1)+exp(1j*((sC-1)*arc+arc/2))*R];%线
simulationChargeBPos=[simulationChargeBPos;simulationChargePos+ConductorX(2)+1j*ConductorY(2)+exp(1j*((sC-1)*arc+arc/2))*R];%线
end end
simulationChargeAPos=simulationChargePos+ConductorX(1)+1j*ConductorY(1); % simulationChargeAPos=simulationChargePos+ConductorX(1)+1j*ConductorY(1);
simulationChargeBPos=simulationChargePos+ConductorX(2)+1j*ConductorY(2); % simulationChargeBPos=simulationChargePos+ConductorX(2)+1j*ConductorY(2);
simulationChargePos=[simulationChargeAPos;simulationChargeBPos]; simulationChargePos=[simulationChargeAPos;simulationChargeBPos];
% %
H=diag(imag(simulationChargePos)); H=diag(imag(simulationChargePos));
r=100*eye(length(imag(simulationChargePos)));%线 r=subconductorR*eye(length(imag(simulationChargePos)));%线
%线线 %线线
matSimulationChargePos=repmat(simulationChargePos,1,length(simulationChargePos)); matSimulationChargePos=repmat(simulationChargePos,1,length(simulationChargePos));
conductor2conductorDistance=matSimulationChargePos-conj(matSimulationChargePos'); conductor2conductorDistance=matSimulationChargePos-conj(matSimulationChargePos');
@ -52,16 +60,19 @@ for Loop=1:maxLoop;
% %
QRI=P\Volt; QRI=P\Volt;
% %
if error<0.0001 if error<0.01
break; break;
end end
%线 %线
vrfRelA=linspace(0,2*pi)';%vrf=verify vrfRelA=linspace(0,2*pi)';%vrf=verify
%线 %线
vrfRelPos=exp(1j*vrfRelA)*R; vrfRelPos=exp(1j*vrfRelA)*subconductorR;
%使线线 %使线线
vrfPos=exp(1j*(0+arc/2))*R+ConductorX(1)+1j*ConductorY(1)+vrfRelPos; vrfPos=[];
vrfPos=ConductorX(1)+1j*ConductorY(1)+vrfRelPos; for sC=1:semi_lineCount
vrfPos=[vrfPos;exp(1j*((sC-1)*arc+arc/2))*R+ConductorX(1)+1j*ConductorY(1)+vrfRelPos];
end
% vrfPos=ConductorX(1)+1j*ConductorY(1)+vrfRelPos;
% %
matVrfPos=repmat(vrfPos,1,length(simulationChargePos)); matVrfPos=repmat(vrfPos,1,length(simulationChargePos));
vrf2ConductorDistance=abs(matVrfPos-repmat(conj(simulationChargePos'),length(vrfPos),1)); vrf2ConductorDistance=abs(matVrfPos-repmat(conj(simulationChargePos'),length(vrfPos),1));
@ -69,9 +80,16 @@ for Loop=1:maxLoop;
Pij=1/2/pi/eslong*log(vrf2MirrorDistance./vrf2ConductorDistance); Pij=1/2/pi/eslong*log(vrf2MirrorDistance./vrf2ConductorDistance);
% %
V=Pij*QRI; V=Pij*QRI;
error=sum(abs(V-500)./500)/length(V); error=sum(abs(V-500)./500)/length(V)
r1=r1+Loop*step; r1=r1+step;
end end
display('Finished.'); display('Finished.');
display(Loop); display(Loop);
scatter(real([simulationChargeAPos;vrfPos;ConductorX(1)]),imag([simulationChargeAPos;vrfPos;+1j*ConductorY(1)])); scatter(real(simulationChargeAPos),imag(simulationChargeAPos),[],'r');
hold on;
scatter(real(vrfPos),imag(vrfPos),[],'k');
% scatter(real([simulationChargeAPos(1:10);]),imag([simulationChargeAPos(1:10);]),10,'red');
% hold;
% scatter(real([simulationChargeAPos(11:20);]),imag([simulationChargeAPos(11:20);]),10,'blue');
% scatter(real([simulationChargeAPos(21:30);]),imag([simulationChargeAPos(21:30);]),10,'green');
% scatter(real([simulationChargeAPos(31:40);]),imag([simulationChargeAPos(31:40);]),10,'yellow');