0

我在 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”中已经存在的值,但我希望将它们加在一起。我怎样才能做到这一点??谢谢。

4

1 回答 1

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));
于 2013-04-21T19:07:58.413 回答