Matlab i problem z ostatnią pętlą

Matlab i problem z ostatnią pętlą
P2
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:3
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

Kopiuj
 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
lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Postów:4946
0

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


P2
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:3
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

lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Postów:4946
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:

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

P2
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:3
0

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

enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 dni
  • Postów:1027
0
Kopiuj
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):

Kopiuj
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)
lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Postów:4946
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ć.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.