Memorizzazione dati interni ciclo for

di il
1 risposte

Memorizzazione dati interni ciclo for

Salve a tutti! è la prima volta che uso il forum e spero mi possiate aiutare!

Il mio problema è il seguente:
sto realizzando un ciclo for. Voglio estrarre da un vettore gli elementi indicizzati dal ciclo.
Vorrei però avere come risultato un vettore che contenga tali valori.

questo è il codice che ho scritto:

function [ H ] = formedia2( X )
for i=1:2
H=[X(2*i), X(4*i), X(8*i)]
end
end

Così com'è il risultato è quello di ottenere il valore H con indice 2 salvato nel workspace come ans.
Come faccio ad ottenere sul workspace i vettori H1 ed H2?

Il passo successivo è infatti quello di fare la media dei valori contenuti in H! ed H2 per confrontarli!

grazie a tutti!

1 Risposte

  • Re: Memorizzazione dati interni ciclo for

    Per memorizzare i valori nella variabile di output "H", questa deve essere definita come "matrice" come nello script in calce.
    function [ H ] = formedia2( X )
    %
    % Aggiunta della inizializzazinoe della matrice "H"
    %
    H=zeros(2,3);
    for i=1:2
       %
       %    Modifica dell'istruzione: ad ogni iterazione i valori del vttore "X"
       %    vengono inseriti nella matrice "H"
       %
       %    H=[X(2*i), X(4*i), X(8*i)]
       H(i,:)=[X(2*i), X(4*i), X(8*i)];
    end
    
    Assumendo
    X=1:16;

    la funzione ritorna i due set di dati:
    H=formedia2(X)
    H =
    2 4 8
    4 8 16
    Se poi l'obiettivo finale è calcolare la media dei valori (come si evince dalla domanda), è possibile modificare la funzione in modo che calcoli anche le medie (per righe e per colonne), come nello script in calce.
    function [ H, media_colonne, media_righe ] = formedia2_1( X )
    %
    % Versione modificata della funzione con calcolo della media per righe e
    % per colonne
    %
    % Inizializzazinoe della matrice "H"
    %
    H=zeros(2,3);
    for i=1:2
       %
       %    Modifica dell'istruzione: ad ogni iterazione i valori del vttore "X"
       %    vengono inseriti nella matrice "H"
       %
       %    H=[X(2*i), X(4*i), X(8*i)]
       H(i,:)=[X(2*i), X(4*i), X(8*i)];
    end
    % 
    % Calcolo della media per colonne
    % 
    media_colonne=mean(H,1);
    % 
    % Calcolo della media per rihìghe
    % 
    media_righe=mean(H,2);
    
    Assumendo
    X=1:16;

    la funzione modificata ritorna i due set di valori e le due medie
    [H,media_c,media_r]=formedia2_1(X)
    H =
    2 4 8
    4 8 16
    media_c =
    3 6 12
    media_r =
    4.6667
    9.3333
    Hope this helps.
Devi accedere o registrarti per scrivere nel forum
1 risposte