|
|
Faktor zwischen zwei Vektoren optimieren |
|
Lucas |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.12.2016, 19:32
Titel: Faktor zwischen zwei Vektoren optimieren
|
|
Guten Abend,
ich habe folgendes Problem:
Ich habe ein gemessenes Signal F und ein simuliertes Signal T. Bei F handelt es sich um Druckdaten, die am Meeresboden aufgenommen wurden. Sie beinhalten also die Gezeitenschwankungen. Bei T handelt es sich um eine simulierte Datenreihe, welche die isolierten Gezeitenschwankungen darstellt. Die beiden Datenreihen liegen jeweils als Vektoren vor und sind "in Phase". Die Gezeitenamplituden haben jedoch unterschiedliche Größenordnungen.
Ich möchte nun also T mit einem bestimmten Faktor m von F subtrahieren, sodass ich die Gezeiten aus F für meine Zieldaten auslösche. m soll also dahingehend optimiert werden, dass die Restamplitude minimal ist.
Ursprünglich dachte ich dieses simple Problem einfach mit fminsearch lösen zu können, scheitere nun aber an der Umsetzung. Vielleicht kann mir jemand auf die Sprünge helfen?
Gruß
Lucas
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 19.12.2016, 17:15
Titel:
|
|
Hallo,
das ist ja ein (überbestimmtes) lineares Gleichungssystem, kann also mit \ gelöst werden:
Grüße,
Harald
|
|
|
Lucas |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2016, 18:04
Titel:
|
|
Vielen Dank für deine Antwort, Harald!
Vielleicht stell ich mich gerade blöd an, aber mir kommt es so vor, als würde ich mich deinem Ansatz im Kreis drehen.
Die Zieldaten sind nicht gegeben, sie sollen aus der Subtraktion von T multipliziert mit dem konstanten Faktor m, welchen es zu optimieren gilt, resultieren. Optimal bedeutet hier, dass sich die Amplituden, die ja in beiden Signalen vorhanden sind, durch den Faktor m auf das gleiche Niveau gebracht werden sollen.
T besteht so gesehen also nur aus einer Signalkomponente. F besteht aus zwei Komponenten: die erste ist annäherungsweise m*T und die zweite das Restsignal, welches ich isolieren möchte (Zieldaten).
Die Charakteristik, die durch T dargestellt wird, steckt also zu einem gewissen (konstanten) Anteil (m) in dem Signal F. Für die Zieldaten soll nun diese Charakteristik weitestgehend ausgelöscht werden.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 19.12.2016, 19:20
Titel:
|
|
Hallo,
dann eben
Grüße,
Harald
|
|
|
Lucas |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.12.2016, 19:29
Titel:
|
|
Danke dir, aber ich glaube das ist nicht so wirklich das, wonach ich auf der Suche bin. Auf diese Weise wird mein m für jeden einzelnen Wert der Zieldaten berechnet.
Ich bin auf der Suche nach einer Möglichkeit (bspw. mit dem cftool) meine Datenreihe T an die Datenreihe F zu fitten, und somit ein m (und b für den Offset) zu bestimmen.
Ich möchte also den Term an F(x) fitten (x steht also jeweils für den xten Wert des jeweiligen Vektors). Leider weiß ich nicht wie ich Matlab bzw. dem cftool klarmache, dass ich keine Funktion, sondern eine Datenreihe an eine andere fitten möchte.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.12.2016, 21:41
Titel:
|
|
Hallo,
Zitat: |
Danke dir, aber ich glaube das ist nicht so wirklich das, wonach ich auf der Suche bin. |
Warum glaubst du das?
Hast du den Ansatz denn versucht? Welche Probleme sind dabei aufgetreten?
Zitat: |
Ich möchte also den Term m * T(x) + b an F(x) fitten |
Von b war bisher nicht die Rede, aber auch das geht.
dann ist p ein Vektor mit zwei Elementen, m und b.
Alternativ kannst du
fitlm
verwenden
Grüße,
Harald
|
|
|
Lucas |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.12.2016, 22:23
Titel:
|
|
Sorry, das b kam nun dazu nachdem ich mich mehr mit der Thematik beschäftigt habe.
Ich muss gestehen, dass ich den \-Operator mit einem / verwechselt habe...
War mir bisher gar nicht bekannt.
Wer lesen kann, ist wohl klar im Vorteil.
Trotzdem weicht mein m nach
von dem m nach
deutlich ab.
Letztere Methode ist allerdings genau das, was ich gesucht habe und die Ergebnisse könnten besser nicht sein. Left division also. Vielen Dank dafür, Harald!
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.12.2016, 22:39
Titel:
|
|
Hallo,
die Abweichung kommt zustande, weil quasi versucht wird, den fehlenden y-Abschnitt durch eine andere Steigung zu "kompensieren".
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|