Creazione di un vettore

di il
2 risposte

Creazione di un vettore

Salve a tutti,
devo costruire un vettore 'b' che rispetto ad un vettore 'a' sia fatto in questo modo:
a=[1,3,7,2,4]
b=[1,4,11,13,17]
cioè la prima componente di 'b' è uguale alla prima componente di 'a', ma la seconda di 'b' è la somma delle prime due di 'a' e cosi via...
Ho impostato un ciclo for di questo tipo:
a=[1,3,7,2,4]
for i=2:length(a);
b=a(1):a(i):sum(a);
end
ma i valori di b (a partire dal secondo) vengono leggermente più piccoli rispetto alla somma esatta.
Ringrazio in anticipo!

2 Risposte

  • Re: Creazione di un vettore

    b=a(1):a(i):sum(a);
    C'è un errore qui. Praticamente in questa maniera il vettore b sarà costruito come b = [a(1), a(1)+a(i), a(1)+2*a(i), ..., sum(a)], nel caso sum(a)-a(i) non fosse divisibile per a(i), viene creato il medesimo vettore fino al valore subito prima di sum(a).
    Considera che nel tuo caso devi agire su ogni componente di b. Questa è una possibile soluzione:
       
    b = zeros(1,length(a));
    for i = 1:length(a)
        %creo un vettore di appoggio costruito come c = [a(1) a(2) ... a(i-1) a(i)]
        c = a(1:i);
        b(i) = sum(c);
    end
    
  • Re: Creazione di un vettore

    Perfetto!
    Grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte