Napisałem fragment kodu w MATLAB, który zasadniczoprzypisuje wartości z macierzy "Ke" (8x8, tylko stałe) do macierzy "KG", która jest początkowo wypełniona zerami. Liczby wierszy i kolumn, do których mają zostać przypisane wartości, są podawane przez tablicę nEN, która zmienia się w innej pętli, ale zawsze jest tablicą składającą się z 4 liczb.
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
Rzecz jest czasami NEN może mieć to samowartości jak te otrzymane w poprzedniej iteracji, więc moja pętla przepisuje wartości, które były już obecne w "KG", ale chcę, aby zostały dodane razem. Jak mogę to zrobić?? Dzięki.
Odpowiedzi:
0 dla odpowiedzi № 1Możesz gromadzić wartości w KG
z:
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));