Somma di alcuni elementi di un vettore per costruirne un altro

di il
3 risposte

Somma di alcuni elementi di un vettore per costruirne un altro

Buonasera a tutti,

Sono alle prime armi su matlab/octave.

Deve eseguire la somma di alcuni elementi di un vettore e costruire un altro vettore avente come elementi il risultato della somma precedente.

Provo a spiegarmi meglio.

Ho un vettore colonna con 35040 e devo eseguire la somma dei primi 96 elementi, secondi 96 elementi, ecc...

Fatto questo devo costruire un vettore colonna costituito da 365 elementi ognuno dei quali è il risultato delle somme precedenti.

Spero possiate aiutarmi.

Grazie

3 Risposte

  • Re: Somma di alcuni elementi di un vettore per costruirne un altro

    Elettra90 ha scritto:


    Ho un vettore colonna con 35040 e devo eseguire la somma dei primi 96 elementi, secondi 96 elementi, ecc...
    Una cosa di questo tipo potrebbe andare bene. Sul vettore test funziona (cioè da sempre 96(, ma l'ho scritto di fretta e non ho fatto altri test, potrei essermi perso qualche caso limite.
    
    lenv = 35040;
    v = ones(lenv,1); %vettore test
    jrange = [1:96:lenv];
    i = 1;
    somma = zeros(365,1);
    for j=jrange
        somma(i)=sum(v(j:j+96-1));
        i++;
    end
    
  • Re: Somma di alcuni elementi di un vettore per costruirne un altro

    Grazie mille per il contributo

    Elettra
  • Re: Somma di alcuni elementi di un vettore per costruirne un altro

    Dati, ad esempio, 30 valori (per limitare l'esempio rispetto ai tuoi 35040) e dato un passo di 5 elementi
    
    n_val=30;
    v_val=1:n_val
    passo=5;
    
    si può calcolare la somma come:
    
    v_somma=sum(reshape(v_val,passo,n_val/passo),1)
    
    Dovresti anche aggiungere un controllo sulla dimensione del vettore di input, per verificare che la sua dimensione sia un multiplo del numero di elementi che vuoi sommare:
    
    n_val=30;
    v_val=1:n_val
    passo=5
    if(~rem(n_val,passo))
       v_somma=sum(reshape(v_val,5,n_val/passo),1)
    else
        disp(['Error: the number of element of the input array ' num2str(n_val) ' is not a multiple of the selected step ' num2str(passo) ])
    end
    
Devi accedere o registrarti per scrivere nel forum
3 risposte