La cosa puù semplice (ed efficace) che puoi fare è eseguire il codice in
modalità debug e verificare riga per riga cosa fanno le singole istruzioni.
Se cancelli il ";" al termine delle istruzioni potrai vedere nella Command Window il risultato di ogni istruzione.
Per le informazioni sugli indici dei vettori, su come si usano e quale funzionalità abbiano, puoi fare riferimento alla documentazione on-line su "indexing"; un paio di esempi:
https://www.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html
https://www.mathworks.com/help/matlab/math/array-indexing.html
Nello specifico dei tuoi esempi:
[*] quando gli operatori * / ^ sono preceduti da un punto .* ./ .^ le corrispondenti operazioni sui vettori vengono eseguite "per elemento":
se "m" è una matrice, ad esempio, m.^2 restituirà una matrice i cui elementi sono ognuno il quadrato di quelli della matrice "m" mentre m^2 restituirà la matrice m*m
[*] la notazione d(1:n-1) definisce i primi "n-1" elementi del vettore "d", puoi leggere l'istruzione come d(dal primo elemento fino all'elemento n-1)
[*] l'istruzione v=[n: -1: 1] ed assegna al vettore "v" gli interi da "n" a 1; il valore "-1" al centro dell'espressione, indica il "passo" per cui puoi leggere
l'istruzione come "i valori da n a 1 con passo -1, se "n" vale, ad esempio, 5, il vettore "v" conterrà 5 4 3 2 1