2012-03-30 6 views
8

ho vari appezzamenti (con hold on) come mostrato nella figura seguente: enter image description hereCome posso trovare l'equazione di un grafico che collega i punti dati in Matlab?

Vorrei sapere come trovare le equazioni di questi sei curve in Matlab. Grazie.

+0

Ci sono un certo numero di equazioni che si adatterebbe quelle curve. Sai qualcosa sulla relazione di base? per esempio. è probabile che sia esponenziale, quadratico, ecc.? –

+0

Non mi è chiaro ... Stai generando una curva dai dati tu stesso o hai semplicemente salvato il grafico come .fig (credo che sia il formato MATLAB)? –

+0

@ Oli: non conosco la relazione sottostante. @ Jack_of_All_Trades: sto generando una curva dai dati stessi. – Pupil

risposta

2

ho trovato interactive fitting tool in Matlab semplice e disponibile, anche se un po di portata limitata:

enter image description here

+0

Purtroppo, questo link è morto. –

+0

Questo sembra essere ciò a cui il manifesto si riferiva: http://www.mathworks.co.uk/help/matlab/data_analysis/interactive-fitting.html – Danny

0

Il grafico sopra sembra essere un'interpolazione lineare. vettori trovati X e Y di dati, dove X contiene gli argomenti e Y dei punti funzione, si potrebbe fare

f = interp1(X, Y, x) 

per ottenere il valore interpolato linearmente f (x). Per esempio, se i dati sono

X = [0 1 2 3 4 5]; 
Y = [0 1 4 9 16 25]; 

poi

y = interp1(X, Y, 1.5) 

dovrebbe darvi un'approssimazione molto approssimativa per 1.5^2. interp1 corrisponderà esattamente al grafico, ma potresti essere interessato a operazioni di adattamento della curva, come approssimazioni spline, ecc.

+0

Suppongo che stia chiedendo come ottenere prima i dati dal grafico !!!! –

+0

@richard: Ho dati che ho tracciato e mostrato nella domanda. Voglio scoprire l'equazione di quella trama che non conosco. – Pupil

+0

@S_H basta essere chiari, hai effettivamente i dati numerici che hanno generato quella trama? L'equazione della trama, come ho detto, è lineare (http://en.wikipedia.org/wiki/Linear_interpolation); in altre parole "collega i punti". Ma questo è uno dei tanti modi possibili per trasformare i dati discreti in una "curva". Devi essere più specifico su ciò che stai cercando. – richard

0

Il consiglio, anche se potrebbe esserci una risposta migliore, è: prova a vedere il tasso di aumento in la curva. Ad esempio, cubico è più rappresentativo del quadratico se la velocità di aumento sembra veloce e trova il polinomio e calcola l'errore di deviazione. Per le curve irregolari, potresti provare il montaggio spline. Immagino che ci sia anche una cassetta degli attrezzi in MATLAB per il montaggio spline.

0

rxns stand per le reazioni? In tal caso, le tue curve sono probabilmente esponenziali. Una funzione esponenziale ha la forma: y = a*exp(b * x). Nel tuo caso, è la larghezza della zona di miscelazione e x è il tempo in anni. Ora, tutto ciò che devi fare è eseguire exponential regression in Matlab per trovare i valori ottimali dei parametri a e b e avrai le tue equazioni.

0

Esiste un modo per estrarre le informazioni con l'handle di figura corrente (gcf) dal grafico.

Ad esempio, è possibile ottenere la serie che sono state tracciate in un grafico:

% Some figure is created and data are plotted on it 
figure; 
hold on; 
A = [ 1 2 3 4 5 7] % Dummy data 
B = A.*A % Some other dummy data 
plot(A,B); 
plot(A.*3,B-1); 

% Those three lines of code will get you series that were plotted on your graph 
lh=findall(gcf,'type','line'); % Extract the plotted line from the figure handle 
xp=get(lh,'xdata'); % Extract the Xs 
yp=get(lh,'ydata'); % Extract the Ys 

Ci devono essere altre informazioni che si possono ottenere dal "findall (GCF, ...)" metodi.