- 积分
- 32
- 注册时间
- 2009-7-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2010-10-6 11:42:33
|
显示全部楼层
来自 湖南湘潭
一楼的思路很好,将电流分成2种类型(流入起始点和流入终止点)分别处理,要比原先的方案来得明了、简单。原先的方案逻辑太复杂了,给人的感觉是一团麻,编程的难度也大。
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- clear all;
- clc
- table1 = [ ...
- 1 0 1 1
- 2 1 2 2
- 3 2 3 3
- 4 2 4 1];
- % col1 - > bcNo(branch circuit No.)支路号;
- % col2 - > bcstart 起始点(变压器)
- % col3 - > bsfinal 终止点(变压器)
- % col4 - > bctype 支路类型
- bcNo = table1(:,1);
- bcstart = table1(:,2);
- bcfinal = table1(:,3);
- bctype = table1(:,4);
- % 各支路上的abc三相(选择)情况
- table2 = [ ...
- 1001 1002 1003 ...
- 2001 2002 2003 ...
- 3001 3002 3003 ...
- 4001 4003 ]';
- bcNo2 = floor(table2/1000);
- bc3ph = mod(table2, 10);
- ind = sub2ind([ max(bcNo2), max(bc3ph) ], bcNo2, bc3ph);
- Selected = zeros(max(bcNo2), max(bc3ph));
- Selected(ind) = 1;
- % Selected =
- %
- % 1 1 1
- % 1 1 1
- % 1 1 1
- % 1 0 1
- % 表示变压器No(节点), 列表示abc三相。
- % 三相变压器各端口的电位, 如U1a, U1b, U1c....U4a, U4b, U4c
- % 1001, 1002, 1003, 2001, 2002, 2003, 3001, 3002, 3003, 4001, 4003
- Vtr = [ 10; 12; 7; 9; 11; 4; 14; 13; 21; 3; 8 ];
- ind = sub2ind([ max(bcNo2), max(bc3ph) ], bcNo2, bc3ph);
- Vtr2 = zeros(max(bcNo2), max(bc3ph));
- Vtr2(ind) = Vtr; % 转换为矩阵的形式。
- % Vtr2 =
- %
- % 10 12 7
- % 9 11 4
- % 14 13 21
- % 3 0 8
- % 表示变压器abc端的电位大小。
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- VSS = [ ];
- for k = 1:length(bcNo)
- if bcstart(k) == 0
- VS = zeros(1,3);
- else
- VS = Vtr2(bcstart(k), :);
- end
- VSS = [ VSS, VS ];
- end
- VFF = [ ];
- for k = 1:length(bcNo)
- if bcfinal(k) == 0
- VF = zeros(1,3);
- else
- VF = Vtr2(bcfinal(k), :);
- end
- VFF = [ VFF, VF ];
- end
- VSS = transpose(reshape(VSS,[3,4]));
- VFF = transpose(reshape(VFF,[3,4]));
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Vtr_tmp = Vtr2;
- % Vtr_tmp(end+1,:) = zeros(1,max(bc3ph));
- % Vtr_tmp = circshift(Vtr_tmp,[1,0]);
- %
- % VSS2 = Vtr_tmp(bcstart+1,:);
- % VFF2 = Vtr_tmp(bcfinal+1,:);
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % 为统一处理,加入了第一行数据。
- table3 = [
- 1 0 0 Inf Inf Inf Inf Inf Inf
- 2 10 11 3 2 4 2 5 2
- 3 12 13 10 1 8 1 9 1 ];
- bctype2 = table3(:,1);
- R = table3(:,2);
- X = table3(:,3);
- Z = R + 1i*X;
- A=Z(1,:);
- B=Z(2,:);
- C=Z(3,:);
- alpha = table3(:,[4,6,8]);
- beta = table3(:,[5,7,9]);
- % alpha =
- %
- % Inf 3 10
- % Inf 4 8
- % Inf 5 9
- % beta =
- %
- % Inf Inf Inf
- % 2 2 2
- % 1 1 1
- f231 = [2,3,1]; % index for alpha , beta ,etc.
- f112 = [1,1,2];
- f323 = [3,2,3];
- f121 = [1,2,1];
- f233 = [2,3,3];
- f312 = [3,1,2];
- ISS = zeros([ max(bcNo2), max(bc3ph) ]); % Magnitutide of the current flowing into the start node of the specific Branch circuit.
- IFF = zeros([ max(bcNo2), max(bc3ph) ]); % Magnitutide of the current flowing into the final node of the specific Branch circuit.
- for k = 1:length(bcNo)
- switch(bctype(k))
- case 1
- IS = zeros(1,3);
- IF = zeros(1,3);
- case 2
- IS = (B*(1./alpha(2,:).^2).*VSS(k,:) - B*(1./(alpha(2,:).*beta(2,:))).*(VSS(k,:)-VFF(k,:)));
- IF = (B*(1./beta(2,:).^2).*VFF(k,:) - B*(1./(alpha(2,:).*beta(2,:))).*(VSS(k,:)-VFF(k,:)));
- case 3
- IS = C*( 1./(3*alpha(3,f112).*alpha(3,f323)) .*(VSS(k,f112)- VSS(k,f323)) ...
- -1./(3*alpha(3,f121).*alpha(3,f233)) .*(VSS(k,f121)- VSS(k,f233)) ...
- +1./(sqrt(3)*alpha(3,:).*beta(3,f312)).*(VSS(k,:) - VFF(k,f312)) );
- IF = C*( 1./(beta(3,:).^2).* VFF(k,:) -1./(sqrt(3)*alpha(3,f231).*beta(3,:)).*(VSS(k,f231)-VFF(k,:)));
- end
- % currents that flow into the certain node sepecified by the branch circuit infomation。
- if bcstart(k) ~= 0
- ISS(bcstart(k),:) = ISS(bcstart(k),:) + IS;
- end
- if bcfinal(k) ~= 0
- IFF(bcfinal(k),:) = IFF(bcfinal(k),:) + IF;
- end
- end
- Itr2 = ISS + IFF;
- % 验证 verified the resultant.
- Itr = [0+((10+1i*11)*(1./3^2)*10)-((10+1i*11)*(1./(3*2))*(10-9))
- 0+((10+1i*11)*(1./4^2)*12)-((10+1i*11)*(1./(4*2))*(12-11))
- 0+((10+1i*11)*(1./5^2)*7)-((10+1i*11)*(1./(5*2))*(7-4))
- ((10+1i*11)*(1./2^2)*9)-((10+1i*11)*(1./(3*2))*(10-9))+(((12+1i*13)./(3*10*9)*(9-4))-((12+1i*13)./(3*10*8)*(9-11))+((12+1i*13)./(sqrt(3)*10*1)*(9-21))+0)
- ((10+1i*11)*(1./2^2)*11)-((10+1i*11)*(1./(4*2))*(12-11))+(((12+1i*13)./(3*10*8)*(9-11))-((12+1i*13)./(3*8*9)*(11-4))+((12+1i*13)./(sqrt(3)*8*1)*(11-14)))
- ((10+1i*11)*(1./2^2)*4)-((10+1i*11)*(1./(5*2))*(7-4))+(((12+1i*13)./(3*8*9)*(11-4))-((12+1i*13)./(3*10*9)*(9-4))+((12+1i*13)./(sqrt(3)*9*1)*(4-13))+0)
- (((12+1i*13)./1^2)*14)-((12+1i*13)./(sqrt(3)*8*1)*(11-14))
- (((12+1i*13)./1^2)*13)-((12+1i*13)./(sqrt(3)*9*1)*(4-13))
- (((12+1i*13)./1^2)*21)-((12+1i*13)./(sqrt(3)*10*1)*(9-21))
- 0
- 0];
- Itr(12) = 0;
- Itr = transpose(reshape(Itr,[3,4]))
- Itr2
复制代码 |
评分
-
1
查看全部评分
-
|