matlab 定义问题 在线急等

来源:百度知道 编辑:UC知道 时间:2024/05/13 14:32:29
A=[6.25 -5 -1.25 0 0;-5 10.834 -1.667 -1.667 -2.5;-1.25 -1.667 12.917 -10 0;0 -1.667 -10 12.917 -1.25;0 -2.5 0 -1.25 3.75];
B=[-18.75 15 3.75 0 0;15 -32.5 5 5 7.5;3.75 5 -38.75 30 0;0 5 30 -38.75 3.75;0 7.5 0 3.75 -11.25];
e(1)=1.06;f(1)=0;
e(2)=1;f(2)=0;
e(3)=1;f(3)=0;
e(4)=1;f(4)=0
e(5)=1;f(5)=0;
PO(2)=0.2;PO(3)=-0.45;PO(4)=-0.4;PO(5)=-0.6;
QO(2)=0.2;QO(3)=-0.15;QO(4)=-0.05;QO(5)=-0.1;
for i=2:5
P(i)=e(i)*(A(i,:)*e(:)-B(i,:)*f(:))+f(i)*(A(i,:)*f(:)+B(i,:)*e(:));
Q(i)=f(i)*(A(i,:)*e(:)-B(i,:)*f(:))-e(i)*(A(i,:)*f(:)+B(i,:)*e(:));
end
for i=2:5
OP(i)=PO(i)-P(i);
OQ(i)=QO(i)-Q(i);
end
for i=2:5; c=zeros(5,5);
c(i,i)=(P(i)-j*Q(i))/(e(i)+j*f(i));
a(i,i)=real(c(i,i));b(i,i)=imag(c(i,i));
H(i,:)=A(i,:)*f(i)-B(i,:)*e(i);
N(i,:)=B(i,:)*f(i)+A(i,:)*e(i);
G(i,:)=-N(i,:);
L(i,:)=H(i,:);
h(i,i)=H(i,i)+b(i,i);
n(i,i)=N(i,i)+a(i,i);
g(i,i)=G(i,i

这位小弟,你的第一次循环的时候,i=2,故h大小为【2,2】,要在循环之前定义一哈,如h=zeros(5,5),还有n、g、l,H、N、G、L也要同样处理,就可以了。哈哈,给赏吧!

你把程序放到m脚本文件里面看看,错误提示符一大堆,不下15个,matlab提示会出现很多循环,你的h定义matlab确实显示是(2,2),
我觉得你不如把你想做什么说一下,让人帮你重新写个程序
个人认为你的程序太繁冗,可以做很大的简化

程序的确不够简明,不如直接再做一个。里面的一些相同的位置直接一起写就可以了。。建议重新编写一个,换个思路。