Dieser Zeilenvektor beinhaltet ja absteigend die Koeffizienten. Nun möchte ich diese Funktion gern nach x umstellen, Werte einsetzen und mir die neuen Funktionswerte ausrechnen lassen. Spalten 2, 3, und 4 sind meine dann einzusetzenden Testdaten:
was meinst du mit nach x umstellen ? f(y)=x oder was?
falls du einfach nur das polynom berechnen willst ist das polyval. steht auch in der doc zu polyfit
_________________
danke für deine antwort. ja, ich möchte gern f(y) = x erhalten. ich habe außerdem gesehen, dass die messdaten nicht die richtigen sind. an die korrekten komme ich aber heute nicht ran, weil die auf arbeit liegen. es geht aber ja auch um die prinzipielle vorgehensweise.
ich finde es sehr fragwürdig, ein Polynom 9. Grades durch Daten zu legen. Polynome von solch hohem Grad neigen zu Oszillationen. Ich würde versuchen, nach einem Modell zu suchen, dass die Daten wiedergibt. Wenn die Daten nicht verrauscht sind, können auch Splines sinnvoll sein.
Sind die Messwerte monoton steigend oder fallend?
Falls nicht, sind sinnvolle Startwerte bekannt? Anders gefragt: es gäbe dann ja mehrere x-Werte zu einem y-Wert, welcher ist gesucht?
anbei habe ich einmal den Datensatz angehängt, um den es geht (hab ihn doch noch zusammenbekommen). Die erste Spalte sind die Winkel, die zweite die Funktionswerte. Ich hatte das Polynom erst einmal nur rein optisch so angepasst.
danke für deine Antwort. Bitte verzeihe, aber ich verstehe die Methode noch nicht ganz. Du verfeinerst den Winkelbereich und interpolierst dort die zugehörigen Funktionswerte. Die Zielwerte werden zukünftig von mir gemessene Funktionswerte sein und der Vektor 'passendeWinkel' sind die Winkel, die ich zukünftig suche. Aber was passiert in der Schleife? Diese Syntax habe ich noch nie gesehen.
% das sind die in die Funktion einzusetzenden Messwerte
zielwerte = k_Beta_Messung;
% das sind die zu ermittelnden Winkel
passende_winkel = zeros(size(zielwerte));
um das genau nachzuvollziehen, bräuchte man wohl auch noch die andere Datei (messung_0.txt).
An sich braucht man aber nur die Fehlermeldung lesen: die angegebene Funktion hat an den Endpunkten des Intervalls [-45, 45] dasselbe Vorzeichen. fzero will aber, dass sie unterschiedliche Vorzeichen hat (denn dann hat eine stetige Funktion immer eine Nullstelle im Intervall).
Bei deiner k_Messung.txt sehe ich die Probleme, dass die Werte nicht monoton sind. Für Zielwert -0.2 gäbe es z.B. eine Lösung zwischen -73 und -71, eine zwischen -31 und -29, eine zwischen -27 und -25, eine zwischen -9 und -7 (ist die 64 bei -7 wirklich sinnvoll???) , und noch ein paar Stellen. Welche dieser vielen Lösungen sollte denn zurückgegeben werden?
es funktioniert genauso, wie es soll. Probleme gibt es nur bei den Werten, die außerhalb meiner Kalibrierfunktion liegen (bei position=-7 und position = 15). Damit es rechnet, habe ich es jetzt erst einmal so gelöst, auch wenn ich mir hier noch anschauen muss, wie das physikalisch zu deuten ist (es geht um das Vermessen einer Nachlaufdelle eines umströmten Körpers mittels Dreilochsonde).
% das sind die in die Funktion einzusetzenden Messwerte
zielwerte = k_Beta_Messung;
% das sind die zu ermittelnden Winkel
passende_winkel = zeros(size(zielwerte));
Anbei noch die Dateien. Eine Extrapolation auf diese Art ist sicher nicht zulässig, aber erst einmal der einzige Weg, der mir einfällt. Ich muss das für die Interpretation berücksichtigen.
Nochmals vielen Dank für deine Hilfe. Das hat mich ein riesiges Stück weitergebracht.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.