|
|
Inline Funktion - Probleme mit Vektorquadrierung |
|
flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.01.2009, 19:22
Titel: Inline Funktion - Probleme mit Vektorquadrierung
|
 |
Hallo,
ich habe folgendes Problem:
Ich habe eine Inline benutzerdefinierte Funktion. Jetzt kann es ja vorkommen, dass die Funktion z.B. f(x,y, x0,y0) = (x-x0)^2 + (y-y0)^2 lautet.
Wenn nun x und x0 (bzw y, y0) Vektoren sind, dann ergibt die Differenz ebenfalls einen Vektor, nur der Vektor lässt sich nicht quadrieren, in einem solchen Fall müsste das Skalarprodukt <v,y'> = v*v' mit v=x-x0 gebildet werden.
Wie erreiche ich, dass dies bei jeder beliebigen Funktion gemacht wird. Ich möchte hier Stringparsing vermeiden bzw. soll die Inline Funktion auch funktionieren, wenn x und x0 Skalare sind, da soll dann das Quadrat gebildet werden.
Bin für jeden Ratschlag dankbar
Phil
|
|
|
|
|
apn |

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Wolfsburg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.01.2009, 09:44
Titel:
|
 |
Hi,
Du kannst rausfinden wie lang der Vektor ist mit
vielleicht hilfts dir, das ganze per if-Abfrage zu lösen:
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.01.2009, 11:47
Titel:
|
 |
Hallo,
ich kenne mich leider mit inline-Funktionen nicht aus. Aber kannst du da nicht auch Matlab-Funktionen einbinden?
dot(x-x0,x-x0)+dot(y-y0,y-0)
bzw.
(x-x0)*(x-x0)' + (y-y0)*(y-y0)'
Falls die Werte Skalare sind, stellt das Ergebnis ein Quadrat dar, ansonsten das gewünschte Skalarprodukt.
MfG
|
|
|
flashpixx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.01.2009, 18:33
Titel:
|
 |
Ich muss vielleicht etwas mehr Infos zusätzlich geben:
Ich habe eine Matlab Klasse, die im Konstruktor vom Benutzer eine beliebige Funktion übergeben bekommt (via String). Nun wird eine quadratischer Fehlerminimierung (SSE) dieser Funktion gemacht. Das geschieht dadurch, dass der Benutzer eine Methode der Klasse aufruft und der Methode die Parameter der Funktion mitgibt, nach denen minimiert werden soll.
Die Klasse leitet die Minimierungsfunktion, die die Originalfunktion aus dem Konstruktor enthält entsprechend hab und die abgeleiteten Funktionen werden intern wieder als inline-Funktionen gespeichert. Für diese Funktionen muss unter Umständen ein ^2 als Skalarprodukt schreiben. Es gibt zwar die Möglichkeit mit vectorize in inline-Funktionen "* / ^" zu ".* ./ .^" zu ersetzen, aber das würde in diesem Fall ein falsches Ergebnis liefern.
Phil
|
|
|
|
|
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 - 2025
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.
|
|