Arrays MATLAB代码,如何修正错误“;位置1处的索引超出数组边界“;

Arrays MATLAB代码,如何修正错误“;位置1处的索引超出数组边界“;,arrays,matlab,syntax-error,structure,Arrays,Matlab,Syntax Error,Structure,我对Matlab是新手,我曾尝试在课堂上做一个练习来测试我是否能成功,但出于某种原因,我一直在第18行得到错误,它超过了数组的4个界限,但我不明白什么超出了界限,因为这对我来说不太有意义 我尝试了反复尝试,但没有运气,我似乎没有任何改变可以让这段代码正常工作 我非常感谢任何人能提供的帮助 coor=1000*[0 0;1 1;2 2;2 1;2 0]; bar=[1 2;2 3;3 4;4 5;2 4]; area=[100 100 100 100 100]; E=200000; H=zeros

我对Matlab是新手,我曾尝试在课堂上做一个练习来测试我是否能成功,但出于某种原因,我一直在第18行得到错误,它超过了数组的4个界限,但我不明白什么超出了界限,因为这对我来说不太有意义

我尝试了反复尝试,但没有运气,我似乎没有任何改变可以让这段代码正常工作

我非常感谢任何人能提供的帮助

coor=1000*[0 0;1 1;2 2;2 1;2 0];
bar=[1 2;2 3;3 4;4 5;2 4];
area=[100 100 100 100 100];
E=200000;
H=zeros(4,5);
F=zeros(5,5);

for i=1:4;
   j1=bar(i,1); j2=bar(i,2);
   hor=coor(j2,1)-coor(j1,1);      
   ver=coor(j2,2)-coor(j1,2);
   L=sqrt(hor^2+ver^2);
   l=hor/L;      
   m=ver/L;
   h=[-hor;-ver;hor;ver;]/L;
   f=L/(E*area(i));
   H((j1-1)*2+1:(j1-1)*2+2,i)=H((j1-1)*2+1:(j1-1)*2+2,i)+h(1:2,1);
   H((j2-1)*2+1:(j2-1)*2+2,i)=H((j2-1)*2+1:(j2-1)*2+2,i)+h(3:4,1);
   F(i,i)=f;
end
H=H([3:9],:);
e0=zeros(4,1)';
p=[0 0 0 0 0 0]';
S=null(H);
M=null(H');
tH=pinv(H)*p;
alpha=inv(S'*F*S)*(-S'*(e0+F*tH));
t=tH+S*alpha;
e=e0+F*t;
d=pinv(H')*e;
(j1-1)*2+1可以大于4,但
H
没有那么多元素。也许您打算将
H
初始化为一个更大的数组?您应该始终将完整的错误消息复制粘贴到问题中,而不是对其进行解释,因为错误消息包含有助于调试的有用信息。您还应该指出您正试图完成什么,否则我们只能猜测如何修复代码。