ho vari appezzamenti (con hold on
) come mostrato nella figura seguente: Come 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.
ho vari appezzamenti (con hold on
) come mostrato nella figura seguente: Come 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.
ho trovato interactive fitting tool in Matlab semplice e disponibile, anche se un po di portata limitata:
Purtroppo, questo link è morto. –
Questo sembra essere ciò a cui il manifesto si riferiva: http://www.mathworks.co.uk/help/matlab/data_analysis/interactive-fitting.html – Danny
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.
Suppongo che stia chiedendo come ottenere prima i dati dal grafico !!!! –
@richard: Ho dati che ho tracciato e mostrato nella domanda. Voglio scoprire l'equazione di quella trama che non conosco. – Pupil
@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
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.
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.
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.
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.? –
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)? –
@ Oli: non conosco la relazione sottostante. @ Jack_of_All_Trades: sto generando una curva dai dati stessi. – Pupil