本帖最后由 839159742@qq.co 于 2020-11-21 11:15 编辑
位置 2 处的索引超出数组边界(不能超出 5)。
出错 Untitled (line 59)
Q3(1,p)=Q3(1,n);
——————————————————————————————————————————————这是问题描述
刚学习MATLAB,应该是数组维度不匹配的原因,希望坛友可以帮忙解决
——————————————————————————————个人猜测
clear
%---------------------Known Condition Parameters-----------------------%
V1=1.05;
LA1=0;
P2=-0.9;
Q2=-0.5;
P3=0.6;
P4=-0.4;
Q4=-0.1;
Y=[0.065-3.5i,-0.04+2i,-0.005+0.5i,-0.02+1i;-0.04+2i,0.06-4i,-0.02+2i,0;-0.005+0.5i,-0.02+2i,0.035-3.5i,-0.01+1i;-0.02+1i,0,-0.01+1i,0.03-2i];%Admittance Matrix
%---------------------Known Condition Parameters-----------------------%
%---------------------The First Iteration------------------------------%
V4=zeros(1,3);% Initial V4. The assumed initial variable.
V3=zeros(1,3);% Initial V3. The assumed initial variable.
V2=zeros(1,3);% Initial V2. The assumed initial variable.
Q3=zeros(1,3);% Initial Q3. The assumed initial variable.
V4(1,1)=1;% Assume V4 is 1 for first iteration
V3(1,1)=1;% Assume V3 is 1 for first iteration
V2(1,1)=1;% Assume V2 is 1 for first iteration
LA4=zeros(1,3);
LA3=zeros(1,3);
LA2=zeros(1,3);
counter=1;
diff4=1;
diff3=1;
diff2=1;
while 1
n=counter;
p=counter+1;
%----------------The Calculation about V4
if diff4<10^(-4)
V4(1,p)=V4(1,n);
LA4(1,p)=LA4(1,n);
else
V4 (1,p)=(((P4-Q4.*1i)./conj(V4 (1,n)))-(Y(4,1).*V1)-(Y(4,2).*V2 (1,n))-Y(4,3).*V3(1,n))./(Y(4,4)); %Calculate V4
LA4(1,p)=atan(imag(V4 (1,p)./real(V4 (1,p)))); %Load angle of V4
diff4=abs(LA4(1,p)-LA4(1,n));
end
if diff2<10^(-4)
V2(1,p)=V2(1,n);
LA2(1,p)=LA2(1,n);
else
V2 (1,p)=(((P2-Q2.*1i)./conj(V2 (1,n)))-(Y(2,1).*V1)-(Y(2,3).*V3 (1,n))-Y(2,4).*V4(1,p))./(Y(4,4)); % Calculate V2
LA2(1,p)=atan(imag(V2 (1,p)./real(V2 (1,p)))) ;%Load angle of V3
diff2=abs(LA2(1,p)-LA2(1,n));
end
if diff3<10^(-4)
V3(1,p)=V3(1,n);
LA3(1,p)=LA3(1,n);
Q3(1,p)=Q3(1,n);
else
Q3 (1,n)=-imag(conj(V3(1,n)).*(Y(3,1).*V1+Y(3,2).*V2 (1,n)+Y(3,3).*V3 (1,n)+Y(3,4).*V4(1,n)));% Calculate Q3
V3 (1,p)=(((P3-Q3(1,n).*1i)./conj(V3 (1,n)))-(Y(3,1).*V1)-(Y(3,2).*V2 (1,p))-Y(3,4).*V4(1,p))./(Y(3,3)); % Calculate V3
LA3(1,p)=atan(imag(V3 (1,p)./real(V3 (1,p)))) ;
V3(1,p)=1.*cos(LA3(1,p))+1i.*sin(LA3(1,p));
diff3=abs(LA3(1,p)-LA3(1,n));
end
if diff4<10^(-4)&&diff3<10^(-4)&&diff2<10^(-4)
break;
end
counter=counter+1;
end
———————————————————————————————————————————————————————这是代码
文件也上传了,MATLABR2020a版本
再次谢谢大家
2020-11-21 11:15 上传
点击文件名下载附件
2.34 KB, 下载次数: 0