Buongiorno a tutti, chiedo scusa se chiedo ancora una volta, ma sono alle prime armi con matlab e per "sopravvivenza" devo obbligatoriamente delle cose.
Nel programma a cui sto lavorando, vengono effettuate delle analisi, tra cui il programma:
1. Mi calcola il residuo (differenza tra funzione fitting e dati) che viene graficato insieme ai dati e alla funzione fitting
2. Mi calcola R2
3. Mi calcola un certo numero Xsp2
Io ora ho impostato che il programma mi salva su un file i valori ENERGIA- RESIDUO (sono 1024 coppie di valori) per ogni analisi, su un altro file mi salva le coppie R2-Xsp2 (una sola coppia a ogni analisi).
Il programma ha un ciclo while per permettere di fare più analisi e
1. per quanto riguarda il file ENERGIA- RESIDUO a ogni ciclo l'utente deve dare il nome del file (quindi si crea un file a ogni ciclo),
2. per quanto riguarda il file R2-Xsp2 (essendo una sola coppia di valori), si inserisce il nome del file solo la prima volta e poi a ogni ciclo il programma aggiunge le coppie a quel file.
Ora vorrei fare un'altra cosa e cioè alla fine dei cicli (Cioè quando l'utente clicca su FINE) vorrei creare 2 grafici:
1. il grafico ENERGIA-RESIDUO di TUTTI i files analizzati, quindi in pratica mi servirebbe che a ogni ciclo (Di cui non conosco il numero, potrebbe essere un'analisi di un solo file o di 10 files, o di 20 files...dipende dall'utente) si crea un vettore energia - residuo e alla fine vengono plottati tutti sullo stesso grafico, ovviamente permettendo di capire di quale set dati si tratta, ad esempio cambiando colore o tipo della linea e specificarlo in una legenda (Sottolineo che l'energia è sempre la stessa, a cambiare è solo il residuo);
2. Il grafico R2-Xsp2 in cui vengono riportati tutti i punti (similmente al grafico Energia- residuo) e inoltre si fa un fit lineare ai punti.
Ps. Io questi vettori li ho già creati per scriverne i valori su file e cioè:
1. Per ENERGIA-RESIDUO
Residuo=[xdata; ydata - A.*ckgraconv_n-lambda.*ckdian];
2. Per R2-Xsp2
Matsp2e=[R2; sp2e];
Però dovrei avere per ogni i-esima analisi un vettore Residuo(i) e un vettore Matsp2e (i) e poi nella legenda far capire a chi mi riferisco. Per far capire a chi si riferisce, nella legenda, vorrei scrivere il nome del materiale (Nome che già faccio scrivere all'utente e mi stampo su un file log dove ci sono tutta a una serie di dati sia di input che output)
cioè:
fprintf('\n Inserire il nome del materiale che si sta analizzando tra due apici es: ''Nome materiale''\n');
nomespetanal=input('Nome: ');
E' possibile una cosa del genere?
Grazie anticipatamente
-------------------------------------------EDIT-------------------------------
Io ho provato a fare così:
1. Per il grafico ENERGIA-RESIDUO all'interno del programma ho fatto:
figure(3); hold on
title('Energia- Residuo');
axis([ xminas xmaxas yminas ymaxas])
plot(xdata,ydata - A.*ckgraconv_n-lambda.*ckdian); %residuo (differenza tra campione e campione fittato)
xlabel('Energia (eV)');
ylabel('Conteggi relativi')
legend (nomespetanal);
Mi funziona, cioè a ogni ciclo mi aggiunge un grafico su quella figura, ma ho il problema sulla legenda, cioè la legenda viene "sovrascritta" anzichè aggiungere di volta in volta il nome , quindi ad esempio se faccio 2 cicli, mi trovo correttamente 2 grafici, ma nella legenda mi trovo solo il nome dell'ultimo file analizzato!
2. Per il grafico R2-Xsp2e, siccome, ho il file con tutte le coppie create durante i cicli, avevo provato semplicemente a graficare i dati presenti nel
file (devo ancora aggiungere la funzione di fitting) un attimo prima di chiudere il programma e cioè:
%%%%%%%%%%%%%%%%%%%%%%%% CREO IL GRAFICO R2-Xsp2-FC%%%%%%%%
s=textscan(f3,'%f %f','headerlines',23)
xr2xs=s{1};
yr2xs=s{2}
figure(4); hold on
title('R2-Xsp2');
plot(xr2xs,yr2xs,'b*');
xlabel('R2');
ylabel('Xsp2e')
legend ('Dati');
%%%%%%%%%%%%%%%%%%%%%%%%END CREO IL GRAFICO R2-Xsp2-FC%%%%%%%%
Purtroppo però non mi funziona