Salve io avrei il seguente esercizio da svolgere:
Ho il seguente vettore:
a=(2,3,3,4,3,2,2,2,2)
che rappresenta dei valori di energia.
Devo costruire l'integrale come somma iterativa, quindi ad esempio il vettore risultante sarà:
b=(2,3+2,3+2+3,3+2+3+4...etc)
che scritto meglio è:
b=(2,5,8,12)
Il problema consiste nel far ripartire il conteggio dell'integrale nel momento in cui supero una certa soglia, che fisso ad esempio a 10, in quel momento devo generare un vettore che come primo elemento abbia il valore corrispondente al momento prima in cui si verifichi il superamento della soglia.
Ad esempio ipotizziamo di essere nel momento in cui la somma iterativa di b sia arrivata al seguente stato:
b=(2,5,8,12)
Dato che 12>10 deve fermarsi, stampare
evento=(8)
azzerare b e ripartire a contare dal valore corrispondente in a (cioè il suo quarto elemento) avrò così:
b=(4,4+3,4+3+2,4+3+2+2)
cioè:
b=(4,7,9,11)
avendo di nuovo superato 10 devo portare b ad avere valore 2 e ricominciare così.
Ho scritto tale calcolo in questo modo:
a=[2;3;3;4;3;2;2;2;2]
for j=1:length(a)
b(j)=sum(a(1:j));
if b(j)>10
evento(j)=b(j-1);
end
end
Come vettore evento ottengo infatti evento=(0,0,0,8) però poi è sbagliato perchè quello che non riesco a fare è far ripartire la somma iterativa dal valore 4 e creare l'altro vettore di b
b=(4,7,9,11)
Spero di essere stata chiara e che qualcuno possa aiutarmi.
Grazie.