Output ciclo for

di Anonimizzato24871 il
4 risposte
Ciao a tutti!
for i=1:5
    t=i:i:5*i;
  end
Eseguendo questo codice ottengo nella prima iterazioe: t=[1 2 3 4 5] ,nella seconda ietazione t=[2 4 6 8], nella terza t=[3 6 9 12] e così via...
Una volta eseguito il codice nel worksapce ottengo t=[5 10 15 20 25] che corrispondono ai valori ottenuti soltanto nell'ultima iterazione.

Per favore qualcuno sa dirmi come posso mettere in un unico vettore i risultati ottenuti ad ogni iterazione?
Ad esempio t=[valori iterazione 1,valori iterazione 2, valori iterazione 3, valori iterazione 4,valori iterazione 5]

Grazie mille in anticipo!

4 Risposte

  • Concatena i vettori

    La domanda sorge spontanea: come e' che uno che usa uno strumento sofisticato come matlab, usato in ambiti scientifici, e non conosce le piu' BANALI operazioni del linguaggio, che si trovano scritte su QUALUNQUE manuale?

    Si vede che non scrivono piu' i libri di una volta!
  • Un argomento simile viene discusso qui: https://www.iprogrammatori.it/forum-programmazione/matlab-simulink/aggiornamento-una-variabile-durante-ciclo-for-t18673.html
    Solo che in quel caso (nel link che ho condiviso) l'output di ogni ciclo è un elemento, mentre nel mio caso l'output è un vettore, e non so come procedere per aggiornare la varibile t in modo da ottenere come output finale un vettore contenente tutti vettori ottenuti ad ogni iterazione.
  • Anche io ho questo problema! come faccio a mettere tutti i valori in un unica iterazione??
  • Quando si comincia a ad utilizzare un linguaggio di programmazione non si può prescindere dalla lettura della documentazione; sarà una cosa noiosa, ma indispensabile.

    Per basi essenziali del linguaggio:
    https://it.mathworks.com/help/matlab/getting-started-with-matlab.html

    Per le basi sull'utilizzo di vettori e matrici (indexing)
    https://it.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html
    https://it.mathworks.com/help/matlab/math/array-indexing.html



    Per una delle tante funzioni per la creazioni vettori e matrici


    Dalla versione R2016b è stata introdotta al funzionalità "implicit expansion" che consente di evitare l'uso di bsxfun.

    In base agli strumenti messi a disposizione dal linguaggio, ci sono molti modi per realizzare quanto desiderato:
    
    t=[]
    for i=1:5
       t=[t i:i:5*i]
    end
    
    t1=[]
    for i=1:5
       t1=horzcat(t1,i:i:5*i)
    end
    
    x=bsxfun(@times,[1 2 3 4 5],[1:5]')
    x1=x(:).'
    
    y=[1 2 3 4 5].*[1:5].'
    y1=y(:).'
    
Devi accedere o registrarti per scrivere nel forum
4 risposte