Verfasst am: 27.05.2013, 08:26
Titel: Funktion fitten mit lsqcurvefit
Hallo liebe Forum-Gemeinde,
ich habe ein kleines Problem. Ich will zum ersten mal die Funktion lsqcurvefit benutzen und hab leider keine Ahnung wie das gehen soll, da ich die Hilfe auch nicht so richtig verstehe.
Ich habe eine Tabelle mit x und y Werten. Wenn ich diese Plotte entsteht ein Bild mit mehreren Peaks. Nun will ich einen bestimmten Bereich der Kurve fitten, den der Benutzer selbst auswählen kann. Für diesen Zweck kann der Benutzer einfach einen Startwert und einen Endwert eingeben.
Jetzt hab ich erstmal versucht mich mit der Hilfe irgendwie durchzuquälen.
Als erstes hab ich mir mein xdata und mein ydata definiert.
passt das mit dem x0 so ? Das ist jetzt praktisch mein Start x-Wert und y-Wert? Jetzt habe ich noch das Problem, dass er mir sagt, das x undefiniert sei. Warum? Ich dachte x bräuchte man hier nicht fest definieren oder?
Vielen Dank! Jetzt hab ich das so ungefähr geändert, allerdings sagt er mir jetzt das mein s nicht definiert sei, woran kann das liegen, da ich das ja eig vorher definiert habe:
??? Error using ==> minus
Matrix dimensions must agree.
Error in ==> Auswerten>@(xc,x)A/((2*pi*s^2)^(0.5))*exp((-0.5*(x-xc)^2)/(s^2)) at 169
fxt= @(xc,x) A/((2*pi*s^2)^(0.5))*exp((-0.5*(x-xc)^2)/(s^2)) %Funktion
Woran kann das liegen? Außerdem habe ich noch kurz eine Frage zu x0, da ich das irgendwie immer noch nicht richtig verstanden habe. Ich habe x0 jetzt definiert als mein Startpunkt. Das heißt der Start X- und Y-Wert. Ist das richtig ?
Also praktisch der Mittelwert. Trotzdem spuckt er mir eine Fehlermeldung nach der anderen aus. Sry, aber ich mach das zum ersten mal und weiß im Moment echt nicht weiter.
wenn alle deine parameter definiert sind ist deine funktion doch bestimmt. was willst du denn nun fitten? du hast deine funktion so geschrieben das du xc fitten willst hast es aber dennoch schon festgelegt als skalar und ihm dann trotzdem noch einen startwert gegeben der kein skalar ist....
also was willst du denn jetzt bestimmen? xc? s ? A?
wenn du alle 3 finden willst
Vielen Dank für deine Antwort! Doch leider versteh ich es immer noch nicht und es funktioniert auch nicht. So sieht jetzt mein Code aus:
Code:
para(1)=y; %def. max Intensität als Fläche des Peaks
para(2)=0.5; %fester Wert
para(3)=0; %Mittelwert für xc
fxt= @(para,x) para(1)/((2*pi*para(2)^2)^(0.5))*exp((-0.5* (x-para(3))^2)/(para(2)^2))
xdata=S((Startwert_double:Endwert_double),1);
ydata=S((Startwert_double:Endwert_double),2);
x0=rand(1,3) [x, resnorm]=lsqcurvefit(fxt,x0,xdata,ydata)
Meine Funktion ist in den xdata und ydata gespeichert. Und ich möchte alle 3 Werte finden, also s,A und xc.
Sry, wenn ich hier Blödsinn schreibe, aber ich mache das zum ersten mal und arbeite auch noch nicht lange mit Matlab.
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.