Aggiornamento di una variabile durante un ciclo for

di il
5 risposte

Aggiornamento di una variabile durante un ciclo for

Ciao a tutti, sto iniziando ad usare matlab in questo periodo, al momento non ho un testo e sono riuscito a leggere soltanto poche nozioni base presenti sul sito ufficiale.
Sto cercando di cambiare il nome di una variabile durante un ciclo for, nel senso vorrei che per ogni ciclo lui creasse una variabile con nome incrementale associato al numero del ciclo, quindi

a1 = ... a2 = ... ... ak = ...

è possibile farlo? se si come?
se può essere utile vi scrivo il testo.

elem = 8
for k = 0:elem
y = k*1.25
iterations = ['Lunghezza relativa a y = ',num2str(y)];
disp(iterations)
w = 2 - 0.1*y
A = w*0.125
end

Io vorrei far si che quell' A si aggiorni insieme a k.

5 Risposte

  • Re: Aggiornamento di una variabile durante un ciclo for

    Qualcuno può darci una mano? Ho un problema simile anche io: come salvare in un vettore ogni risultato di un'iterazione di un ciclo for....

    GRAZIE!

    Django ha scritto:


    Ciao a tutti, sto iniziando ad usare matlab in questo periodo, al momento non ho un testo e sono riuscito a leggere soltanto poche nozioni base presenti sul sito ufficiale.
    Sto cercando di cambiare il nome di una variabile durante un ciclo for, nel senso vorrei che per ogni ciclo lui creasse una variabile con nome incrementale associato al numero del ciclo, quindi

    a1 = ... a2 = ... ... ak = ...

    è possibile farlo? se si come?
    se può essere utile vi scrivo il testo.

    elem = 8
    for k = 0:elem
    y = k*1.25
    iterations = ['Lunghezza relativa a y = ',num2str(y)];
    disp(iterations)
    w = 2 - 0.1*y
    A = w*0.125
    end

    Io vorrei far si che quell' A si aggiorni insieme a k.
  • Re: Aggiornamento di una variabile durante un ciclo for

    Ciao!
    Non ho molto capito ciò che intendi fare ma da quel poco che ho capito potrebbe esserti utile capire questo ragionamento per memorizzare un risultato in un vettore ad ogni iterazione:
    
    x = 0;
    for k=1:10
        x(end+1) = x(end)+1
    end
    
    PS E' assolutamente un esempio questo senza alcun senso ma dovrebbe renderti l'idea di come poterlo fare.
  • Re: Aggiornamento di una variabile durante un ciclo for

    Ciao Eduadie, innanzitutto grazie per aver risposto!
    Allora, ti riporto la mia parte di .m file così sarò più chiara:

    svl=xL+100max(prog);
    n=length(svl);
    for j=1:n
    for i=0svl(j)
    gr=zeros(197,1);
    xxL=xL+i;
    ...
    gr(i+1)=min(tmp_gr);
    ...
    end
    end

    Quindi, io cosa vorrei fare:
    1) ogni output di ciascuna iterazione del ciclo "for i" (che è uno scalare) vorrei fosse salvato nel vettore "gr" così nella prima cella del vettore colonna "gr" c'è il primo valore della prima iterazione del ciclo for i e così via;
    2) ogni output di ciascuna iterazione del ciclo "for j" (che è un vettore) vorrei salvarlo come colonna di una matrice così nella prima colonna della matrice c'è il primo vettore con i valori della prima iterazione del ciclo for j.

    Spero di essermi spiegata bene...
    GRAZIE PER L'AIUTO!
  • Re: Aggiornamento di una variabile durante un ciclo for

    Non so se è quelllo che ti serve, ti posto un esempio:
    clear all
    clc
    
    a=[1:1:10];
    divisore=2;
    pari=[];
    dispari=[];
    for i=1:length(a)
        if mod(a(i),divisore) == 0;
            pari(i)=[a(i)]
            
        elseif mod(a(i),divisore) ~= 0;
            dispari(i)=[a(i)]
        end
        
    end
    prova a runnarlo e vedi.
    come vedrai i 2 vettori
    pari
    e
    dispari
    verranno riempiti con l'i-esimo valore di
    a
    che corrisponde all' i(terazione)in atto (scusa il gioco di parole).

    N.B. ogni volta che una delle condizioni non è vera, in questo caso il modulo a(i)/2 == oppure ~= da 0 il programma metterà uno 0 in corrispondenza della posizione in cui è avvenuto il test.
    Sapete per caso come risolvere questo problema?
  • Re: Aggiornamento di una variabile durante un ciclo for

    Per evitare che venga inserito uno "0" nel caso in cui la condizione non è verificata, si può inserire, all'interno del ciclo "for" un contatore per i numeri pari ed uno per i numeri dispari.
    I contatori vengono incrementati ogni volta (e solo ogni volta) che le condizioni sono verificate.
    
    clear all
    clc
    
    a=[1:1:10];
    divisore=2;
    pari=[];
    %
    % contatore numeri pari e dispari
    %
    pari_cnt=0;
    dispari_cnt=0;
    %
    dispari=[];
    %
    for i=1:length(a)
        if mod(a(i),divisore) == 0;
    % incremento del contatore
            pari_cnt=pari_cnt+1;
    %        pari(i)=[a(i)]
    % utilizzo del contatore come indice del vettore
            pari(pari_cnt)=[a(i)]
            
        elseif mod(a(i),divisore) ~= 0;
    % incremento del contatore
            dispari_cnt=dispari_cnt+1;
    %        dispari(i)=[a(i)]
    % utilizzo del contatore come indice del vettore
            dispari(dispari_cnt)=[a(i)]
        end
        
    end
    
    


    Hope this helps
Devi accedere o registrarti per scrivere nel forum
5 risposte