PDA

View Full Version : Estrarre valori numerici da un ciclo for [Matlab]


Edo_Rm
24-03-2012, 14:07
Salve a tutti!

Ho un problema... Ho scritto un ciclo for che mi calcola i valori di una funzione in funzione del mio input:

for T=300:50:700

bla bla bla

x_finale=nf/n_totale

end

Ora il programma mi restituisce, per ogni T un valore di x_finale diverso.

Se io ora volessi fare un grafico, non saprei come fare dato che chiedendogli di plottare(x_finale,T) questo giustamente mi disegna un punto.

Quello che vorrei ottenere è una serie di punti sullo stesso grafico in modo da poter poi fare un'interpolazione ed avere una curva che approssima l'andamento di x_finale con T.

In sostanza sto chiedendo se esiste un comando (suppongo da inserire all'interno del ciclo for) che dica a matlab di mettere da parte i valori di x_finale trovati per la T corrispondente di modo che poi questi possano essere inseriti tutti all'interno di un grafico.

Grazie a tutti per l'aiuto!!!

Efem
25-03-2012, 09:47
Ciao, non conosco matlab, ma nel tuo caso suppongo proprio ti serva un array.
Ad ogni ciclo, inserisci nell'array il valore che hai ottenuto.


valori = struct([])
i = 0
for T=300:50:700
...
...
...
x_finale=nf/n_totale
valori[i] = x_finale
i++
end


La stringa in grassetto è quella che inserisce i dati nell'array, ma non so se in matlab si faccia esattamente così (non conosco bene il linguaggio e immagino che sia così, ma nel caso potrai renderti conto facilmente facendo una ricerca o cercando in matlab stesso.
Dopodichè, usa la funzione plot con in input questo array che hai calcolato.

The Jack
25-03-2012, 09:57
Per fare quello che vuoi devi imparare a usare il comando eval, purtroppo ora sono dal tablet e non posso incollare esempi di codice comunque ti permette di aggiungere alla tua variabile un numero finale che può variare con il ciclo... Ad esempio crei una variabile variabilei che ad ogni passaggio del ciclo salva il tuo valore. Cerca su google, non è difficile da usare!


Sent from my iPad using Tapatalk HD

Rsk
25-03-2012, 10:49
Come ti è stato già suggerito da Efem, è sufficiente memorizzare i vari output della tua funzione in un array, come in questo esempio


for i = 1:100
f(i) = sin(i);
end

plot(f)