Matlab i problem z ostatnią pętlą

0

Witam,

Mam problem odnośnie poniższego kodu. Ostatnia pętla ma sumować wartości wierszy od 1 do 6, a pożniej tą zsumowaną wartość ma wstawić w pierwszy wiersz.
W 16 linii napisałem L=M(i,1) zamiast L=L+M(i,1) i niestety w rezultacie dawało taką samą wartość pierwszego wiersza z ostatnim.Czemu? Jaki sens ma dodawanie po prawej stronie zmiennej "L", skoro
nadałem jej wartość 0 oraz co ona wnosi? Czy jest inny prostszy sposób na zrobienie ostatniej pętli?

Proszę o pomoc

 for i=1:30
        M(i,1)= 0;
end

P=1     


for i=P:P+5
    M(i,1)=rand
end

P=P+5

L=0
for i=P-5:P
    L=L+ M(i,1)
    M(P-5,1)=L
end
0

Co chcesz osiągnąć, i jaki jest problem? Gdzie w tym kodzie jest bug?

0

Chcę się dowiedzieć jaki jest sens pisania zmiennej L po prawej stronie "L=L+M(i,1)" tej części kodu oraz czy jest inny ławiejszy sposób napisania ostatniej pętli

0

Jest sens, bo, L po lewej stronie, to stare, L, ktore jest w pamięci, a nowe, L jest "updajtowane" za pomoca starej, i tak w kółko, w pętli; tak działa, imperative programming. Dummy example, suma liczb do, n:

def sum(n):
    s = 0
    for i in 0 ... n:
        s = s + i
    return s
0

Matlaba uczę się od wczoraj. Czy mógłbym prosić o prostsze wyjaśnienie. Z góry dziękuje za pomoc

0
L=0
for i=P-5:P
    L=L+ M(i,1)
    M(P-5,1)=L
end

ewolucja wartości L w czasie (każda linijka to kolejny obrót pętli):

0
M(P-5,1)
M(P-5,1) + M(P-4,1)
M(P-5,1) + M(P-4,1) + M(P-3,1)
M(P-5,1) + M(P-4,1) + M(P-3,1) + M(P-2,1)
M(P-5,1) + M(P-4,1) + M(P-3,1) + M(P-2,1) + M(P-1,1)
M(P-5,1) + M(P-4,1) + M(P-3,1) + M(P-2,1) + M(P-1,1) + M(P,1)
0

@Per2504: Prześledź sobie z kartką, co tam się dzieje, pamietając, że, L z lewej strony , = w, L=L+ M(i,1) jest dopiero tworzone ze "starego", L; niestety znak równości w programowaniu, nie jest tym czym powinien być.

1 użytkowników online, w tym zalogowanych: 0, gości: 1