2012-03-30 3 views
8

Ich habe verschiedene Parzellen (mit hold on) als zeigen in der folgenden Abbildung: enter image description hereWie kann ich die Gleichung eines Diagramms finden, das Datenpunkte in Matlab verbindet?

Ich würde gerne wissen, wie die Gleichungen dieser sechs Kurven in Matlab zu finden. Vielen Dank.

+0

eine beliebige Anzahl von Gleichungen Es gibt, die diese Kurven passen würde. Weißt du etwas über die zugrunde liegende Beziehung? z.B. ist es wahrscheinlich exponentiell, quadratisch usw.? –

+0

Nicht klar für mich ... Generieren Sie Kurve aus den Daten selbst oder Sie haben nur das Diagramm als .fig gespeichert (ich vermute, dass das MATLAB-Format ist)? –

+0

@ Oli: Ich kenne die zugrunde liegende Beziehung nicht. @ Jack_of_All_Trades: Ich erzeuge eine Kurve aus den Daten selbst. – Pupil

Antwort

2

fand ich interactive fitting tool in Matlab einfach und nützlich, wenn auch etwas begrenzten Bericht:

enter image description here

+0

Leider ist diese Verbindung tot. –

+0

Das scheint das zu sein, worauf sich das Poster bezieht: http://www.mathworks.co.uk/help/matlab/data_analysis/interactive-fitting.html – Danny

0

Die obige Grafik scheint eine lineare Interpolation zu sein. Gegeben Vektoren X und Y von Daten, wobei X die Argumente und Y der Funktion Punkte enthalten, könnten Sie

f = interp1(X, Y, x) 

tun, um den linear interpolierten Wert f zu erhalten (x). Zum Beispiel, wenn die Daten

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

dann

y = interp1(X, Y, 1.5) 

sollten Sie eine sehr grobe Annäherung an 1.5^2 geben. interp1 wird das Diagramm genau entsprechen, aber Sie könnten interessiert sein an Züchter Kurvenanpassungen, wie Spline Annäherungen etc.

+0

Ich denke, er fragt, wie man zuerst die Daten aus der Grafik bekommt !!!! –

+0

@richard: Ich habe Daten, die ich geplottet und in der Frage gezeigt habe. Ich möchte die Gleichung dieser Handlung herausfinden, die ich nicht kenne. – Pupil

+0

@S_H nur um klar zu sein, haben Sie tatsächlich die numerischen Daten, die diese Handlung generiert? Die Gleichung der Handlung, wie ich sagte, ist linear (http://en.wikipedia.org/wiki/Linear_interpolation); mit anderen Worten "verbinde die Punkte". Aber dies ist eine von vielen Möglichkeiten, die diskreten Daten in eine "Kurve" zu verwandeln. Sie müssen genauer angeben, wonach Sie suchen. – richard

0

Der Ratschlag, obwohl es bessere Antwort geben könnte, von mir ist: versuchen Sie, die Rate der Zunahme zu sehen die Kurve. Zum Beispiel ist kubisch repräsentativer als quadratisch, wenn die Steigerungsrate schnell erscheint und das Polynom findet und den Abweichungsfehler berechnet. Bei unregelmäßigen Kurven könnten Sie eine Spline-Anpassung versuchen. Ich denke, es gibt auch eine Toolbox in Matlab für die Spline-Anpassung.

0

Ist rxns für Reaktionen stehen? In diesem Fall sind Ihre Kurven wahrscheinlich exponentiell. Eine Exponentialfunktion hat die Form: y = a*exp(b * x). In Ihrem Fall ist y die Breite der Mischzone und x ist die Zeit in Jahren. Jetzt müssen Sie nur exponential regression in Matlab ausführen, um die optimalen Werte der Parameter a und b zu finden, und Sie haben Ihre Gleichungen.

0

Es gibt eine Möglichkeit, Informationen mit dem aktuellen Zahlenpunkt (gcf) aus Ihrem Diagramm zu extrahieren.

Zum Beispiel können Sie die Serie erhalten, die in einem Diagramm aufgetragen wurden:

% 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 

Es müssen andere Informationen, die Sie aus dem „findall (GCF, ...)“ erhalten können Methoden.

Verwandte Themen