我在MATLAB中编写了一段代码,基本上将矩阵'Ke'(8x8,只是常量)的值分配给矩阵'KG',最初用零填充。应赋予值的行和列的数量由数组nEN给出,该数组在另一个循环中变化,但总是由4个数字组成。
KG=[];
for t=1:Nw
for i=1:Nh
eN=Am(t:t+1,i:i+1)
nEN=reshape(eN',1,[])
for i1=1:4
for i2=1:4
KG((2*(nEN(i1))-1),(2*(nEN(i2))-1))=Ke(((2*i1)-1),((2*i2)-1));
KG((2*(nEN(i1))-1),(2*(nEN(i2))))=Ke((2*i1-1),(2*i2));
KG((2*(nEN(i1))),(2*(nEN(i2))-1))=Ke((2*i1),(2*i2-1));
KG((2*(nEN(i1))),(2*(nEN(i2))))=Ke((2*i1),(2*i2));
end
end
end
end
KG
有时nEN可以具有与前一次迭代中获得的值相同的值,因此我的循环会重写已经存在于'KG'中的值,但我希望将它们添加到一起。我怎样才能做到这一点??感谢。
答案 0 :(得分:0)
您可以使用以下代码累积KG
中的值
KG((2*(nEN(i1))-1),(2*(nEN(i2))-1)) = KG((2*(nEN(i1))-1),(2*(nEN(i2))-1)) + Ke(((2*i1)-1),((2*i2)-1));
KG((2*(nEN(i1))-1),(2*(nEN(i2)))) = KG((2*(nEN(i1))-1),(2*(nEN(i2)))) + Ke((2*i1-1),(2*i2));
KG((2*(nEN(i1))),(2*(nEN(i2))-1)) = KG((2*(nEN(i1))),(2*(nEN(i2))-1)) + Ke((2*i1),(2*i2-1));
KG((2*(nEN(i1))),(2*(nEN(i2)))) = KG((2*(nEN(i1))),(2*(nEN(i2)))) + Ke((2*i1),(2*i2));