WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Inline Funktion - Probleme mit Vektorquadrierung

 

flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2009, 19:22     Titel: Inline Funktion - Probleme mit Vektorquadrierung
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


apn
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 04.12.08
Wohnort: Wolfsburg
Version: ---
     Beitrag Verfasst am: 21.01.2009, 09:44     Titel:
  Antworten mit Zitat      
Hi,

Du kannst rausfinden wie lang der Vektor ist mit
Code:

vielleicht hilfts dir, das ganze per if-Abfrage zu lösen:
Code:
n=length(v)
if n==1
% deine erste methode mit quadrieren
elseif n>1
% deine zweite methode mit skalarprodukt
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2009, 11:47     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2009, 18:33     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.