作业帮 > 综合 > 作业

有没有哪位高手能帮我看一下这个MATLAB程序哪里错误了啊?运行不了,提示有错误!

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/29 23:15:10
有没有哪位高手能帮我看一下这个MATLAB程序哪里错误了啊?运行不了,提示有错误!
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;
ifnl(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
fo k=l:nbr
ifnl(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
有没有哪位高手能帮我看一下这个MATLAB程序哪里错误了啊?运行不了,提示有错误!
你的程序从哪复制来的,错误太多了
如果参数矩阵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);
再问: 为什么输入你给主程序以后自动就清除 了啊?!我没学过MATLAB,自己琢磨的,能不能再教教我啊?!
再答: 主程序与定义的函数是不能在一起的,怎么叫自动就清除了,不是很明白 就是你定义的函数先保存为ybusl.m,然后新建一个m文件,名字就你自己随便取了 输入你的输入参量,即zdata,再调用你的函数y=ybusl(zdata);点击run就可以了 函数就自动调用成功了。
再问: 不好意思,大神,再追问一下你,就是先新建一个m文件我知道的把函数放在里面然后保存一下,然后是不是打开这个然后输入主程序啊?
再答: 定义函数也是在m文件里,只是保存函数的文件名一定要和定义的函数名称一致 不然会有问题的。 新建一个m文件,建议最好先使用clear,就把我的代码复制就可以了,我运行过的: 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) 然后点击run,在命令窗里就会显示运算结果了,祝顺利。