你的程序从哪复制来的,错误太多了
如果参数矩阵zdata的元素都为正整数,还是可以运行的:
函数:(ybusl.m)
function Y=ybusl(zdata)
nl=zdata(:,1);
nr=zdata(:,2);
R=zdata(:,3);
X=zdata(:,4);
nbr=length(zdata(:,1));
nbus=max(max(nl),max(nr));
Z=R+j*X;
y=ones(nbr,1)./Z;
Y=zeros(nbus,nbus);
for k=1:nbr
if nl(k)>0&nr(k)>0
Y(nl(k),nr(k))=Y(nl(k),nr(k))-y(k);
Y(nr(k),nl(k))=Y(nl(k),nr(k));
end
end
for n=1:nbus
for k=1:nbr
if nl(k)==n
Y(n,n)=Y(n,n)+y(k);
elseif nr(k)==n
Y(n,n)=Y(n,n)+y(k);
end
end
end
-------------
主程序:
clear all;clc;
zdata=[1 2 3 4;2 4 6 7;4 6 9 3;2 5 8 9;1 4 5 7];
y=ybusl(zdata);
function[Y]=ybusl(zdata)
nl=zdata(:,1);nr=zdata(:,2);R=zdata(:,3);X=zdata(:,4);
nbr=length(zdata(:,1));nbus=max(max(nl),max(nr));
Z=R+j*X;
y=ones(nbr,1)./Z;
Y=zeros(nbus,nbus);
for k=1:nbr
if nl(k)>0&nr(k)>0
Y(nl(k),nr(k))=Y(nl(k),nr(k))-y(k);
Y(nr(k),nl(k))=Y(nl(k),nr(k));
end
end
for n=1:nbus
for k=1:nbr
if nl(k)==n
Y(n,n)=Y(n,n)+y(k);
elseif nr(k)==n
Y(n,n)=Y(n,n)+y(k);
end
end
end