/ / Jak dodać wartości do już istniejących w macierzy za pomocą pętli 'for' w MATLAB? - matlab, pętla for, macierz

Jak dodać wartości do już istniejących w macierzy za pomocą pętli 'for' w MATLAB? - matlab, pętla for, macierz

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 № 1

Moż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));