"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

matlab: fit (sum of sine)

wergor 16.07.2018 - 13:31 2366 3
Posts

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4023
ich habe ein system, das ich mit einem sinussignal anrege und das mir eine sinusförmige antwort zurückliefert. an das antwortsignal fitte ich eine sinusfunktion um amplitude und phase herauszufinden.
in >90% der fälle funktioniert das mit fit() sehr gut (mit standardeinstellungen) in den restlichen fällen liefert die funktion blödsinn zurück (der einfachheit halber hier in cftool):
schlecht:
capture3_231847.png
gut:
capture4_231848.png
hat jemand eine idee wie ich die zu besseren ergebnissen komme? weder signal tiefpassfiltern, noch sample size reduzieren, noch längere antwortsignale verarbeiten bringt erfolg. ich habe auch schon versucht die startbedingungen anzupassen (weil die frequenz ja bekannt wäre), da habe ich aber eher das gefühl matlab macht mir dann kurven mit genau den (bzw. minimal veränderten) parametern.
das 'schwierige' signal ist angehängt.
y_231851.zip (downloaded 90x)

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4256
Kann es eventuell daran liegen, dass die schwierige Funktion deutlicher von 0 nach oben abweicht? Kann man für die Funktion f(x) = a1*sin(b1*x+c1)+d1 auch nehmen?

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4023
:eek:
:bash:
:rolleyes:
ich sehe den wald mal wieder vor lauter bäumen nicht... ich weis nicht ob ich eine funktion mit konstantem offset definieren kann, aber ich kann den offset ja auch einfach vom signal subtrahieren...
danke!

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4256
Gerne! An subtrahieren hab ich auch gedacht, kenne aber Matlab nicht. Hab mit so was zum Glück nichts zu tun ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz