2016-08-16 3 views
0

Ich habe Datenpunkte für eine Funktion f: R^3-> R, d. H. Ich habe x1, x2, x3 und für jede Kombination von verschiedenen Werten von x1, x2, x3 habe ich einen Wert für f. Zum BeispielMatlab: Finden Interpolationsfunktion in 3d

x1 = 1:10, x2 = 1:6, x3 = 1:8 

dann bekam ich 10 * 6 * 8 = 480 Werte für f.

Ich weiß, es gibt eine Funktion interp3, die Interpolation im 3D-Raum, aber nur für einen bestimmten Satz von Abfragepunkten.

Nun meine Frage: Ich hätte gerne eine Art allgemeiner Ausdruck für die Funktion f, d.h. so etwas wie f(x1,x2,x3) = ..., wo die Punkte eine Funktion am besten die obigen Daten entsprechen und ist eine "geschlossene Form" Ausdruck. Zum Beispiel, wenn es am besten linear in x1 passt, quadratisch in x2 und konstant in dann f wäre so etwas wie f(x1,x2,x3) = a*x1 + b*x2^2 +c und a, b, c sind feste Zahlen. Also im Grunde gibt es zwei Dinge Ich mag würde lösen:

  1. Wie ist f auf den Daten, dh den allgemeinen Ausdruck (wie oben mit a*x1 + b*x2^2 +c)

  2. bekommen den besten Wert für a,b,c passen die angegebenen Daten.

Gibt es eine Möglichkeit Matlab kann dieser/diese beiden Problem/s lösen, so dass es eine gute Funktion Ausdruck für f berechnet auf x1, x2, x3 abhängig? Und wenn nicht (weil ich denke, 1. ist ziemlich schwer zu lösen?) Gibt es eine Möglichkeit zu "annehmen" f hat eine gegebene Form (wie f(x1,x2,x3) = a*x1^2 + b*x2^2 +c*x3^2 oder etwas anderes) und dann finden Sie die besten Werte, die diese Form mit dem gegebenen Daten?

Auch jetzt sehen Sie, dass ich interp3 nicht benutzen kann (zumindest denke ich so), weil ich diesen Ausdruck der "geschlossenen Form" nicht habe.

+0

versuchen 'Hilfe passen' –

+0

Großartig Danke. Ich habe mir das mal angeschaut, aber anscheinend nur für 1 oder 2 Dimensionen: "Passende Daten, spezifiziert als Matrix mit entweder einer (Kurvenanpassung) oder zwei (Oberflächenanpassungs) -Säulen". Außerdem wird in der Registerkarte "Siehe auch" nichts für 3d erwähnt ?! Es sieht auch so aus, dass 'polyfit' nur für 1d ist, oder? – SemtexB

+0

Aber das sieht vielversprechend aus: https://de.mathworks.com/matlabcentral/newsreader/view_thread/116762 zumindest für 2. in meiner Frage. 1. Ich muss mich wohl selbst behandeln? – SemtexB

Antwort

0

Soweit ich verstehe, möchten Sie einen mathematischen Ausdruck, der Ihre 3D-Daten fast beschreibt. Die beste Lösung für Sie ist MATLABs Werkzeug zur Oberflächenanpassung. Öffnen Sie das Oberflächenwerkzeug mit der Anweisung sftool. Dann fügen Sie Ihre Daten ein, X, Y, Z. Wählen Sie danach Custom Equation aus der Liste in der Mitte des Fensters und fügen Sie dann Ihre gewünschte Fit-Funktion ein und klicken Sie dann einfach auf die Fit-Schaltfläche. Wenn nichts schief geht, erscheinen die Koeffizienten (Ihre a,b,c) der benutzerdefinierten Funktion auf der linken Seite des Fensters in Results Abschnitt.

+0

Die Sache ist, dass ich Daten 'X1, X2, X3, F', d. H. Eine Dimension mehr bekam. Ich möchte also einen mathematischen Ausdruck, der 4D-Daten fast beschreibt: 3D-Eingabe und 1D-Ausgabe. – SemtexB