Svolgere un calcolo tra i valori di un vettore

di il
2 risposte

Svolgere un calcolo tra i valori di un vettore

Salve a tutti, vorrei un aiuto per quanto riguarda un argomento.
allora, io ho un vettore verticale. devo eseguire una sottrazione tra i vari valori. se il primo valore è maggiore del successivo il calcolo deve essere svolro, altrimenti devo scorrere la matrice finche non trovo un valore appropriato. come faccio?
per intendeerci, il calcolo va svolto solo se matrix(i)>matrix(i+1), altrimenti continua ad implementare finchè non trovi uno adatto (matrix(i+2),matrix(i+3)) ecc. grazie a tutti per l'aiuto

per quanto riguarda l'eliminazione dei valori semplicemente negativi ho utilizzato una cosa di questo tipo:
for i=1:k
if f1v(i)>0
matrix(i)=f1v(i)
else matrix(i)=0
end
end
matrix(matrix==0) = []
[o,p]=size(matrix);

solo che non so come utilizzarlo anche per questo caso

2 Risposte

  • Re: Svolgere un calcolo tra i valori di un vettore

    Se cerchi di ottenere come output un vettore contenente i risultati delle varie sottrazioni forse questo codice può aiutarti, sperando di aver capito il tuo intento.
    
    vettore=randi(30,30,1);
    output=zeros(30,1);
    for i=1:length(vettore)
        major=find(vettore>vettore(i));
        for j=1:length(major)-1
            if major(j)>i && output(i)==0
                output(i)=vettore(i)-vettore(major(j));
            end
        end
    end
    
  • Re: Svolgere un calcolo tra i valori di un vettore

    Non è chiaro se, verificata la condizione x(i) > x(i+1) vuoi calcolare la differenza

    x(i) - x(i+1)

    oppure la differenza

    x(i+1) - x(i)

    Ad ogni modo, una soluzione senza l'utilizzo di loop potrebbe essere:
    
    x=randi(33,1,13)
    %
    % Calcolo della differenza x(i)-x(i+1)
    %
    all_diff=diff(x)
    %
    % Indice dell'i-esimo elemento del vttore di input per il quale x(i) > x(i+1)
    %
    valid_idx=find(all_diff <= 0)
    %
    % Se interessati alla differenza [x(i) - x(i+1)]
    %
    vett_diff_1=all_diff(valid_idx)*-1
    %
    % Se interessati alla differenza [x(i+1) - x(i)]
    %
    vett_diff_2=all_diff(valid_idx)
    
    I commenti nel codice dovrebbero chiarire i vari passaggi.
Devi accedere o registrarti per scrivere nel forum
2 risposte