|
|
function handle einer Summe |
|
Fredo |

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 19.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.03.2014, 17:34
Titel: function handle einer Summe
|
 |
Hallo Leute,
ich bin mit function handle noch nicht wirklich vertraut und habe diesbezüglich noch immense Schwierigkeiten.
Ich möchte der Funktion einen n-dimensionalen Vektor X übergeben können. Dieser soll in 3-dimensionale Vektoren zerlegt und anschließend die Summe der Abstände zwischen benachbarten Vektoren berechnet werden.
Also:
f=@(X) norm(X(1:3)-X(4:6)) + norm(X(4:6)-X(7:9)) + ... + norm(X(end-5:end-3)-X(end-2:end))
Wie kann ich die obige Funktion einfach MATLAB übergeben ohne die Summe explizit auszuschreiben (schließlich kann n in meinen Betrachtungen sehr groß werden)?
Eine for schleife innerhalb der Funktion wäre toll, geht aber bekanntlich ja nicht :/
Danke!
Fredo
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.03.2014, 19:19
Titel:
|
 |
Hallo,
zunächst mal: wenn die Funktion zu kompliziert wird, dann würde ich weg vom anonymen Function Handle zur separaten Funktion gehen.
Wenn sichergestellt, dass die Länge des Vektors immer durch 3 teilbar ist, dann sollte hier etwas folgender ARt gehen:
Für die Lesbarkeit ist es aber wohl einfacher, das auf mehrere Zeilen aufzuteilen :)
Grüße,
Harald
|
|
|
Fredo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 19.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.03.2014, 19:49
Titel:
|
 |
Danke Harald,
ich habe es mittlerweile ein wenig anders gelöst (aber vom Prinzip her gleich):
Also für mich als Laien scheint dieser Weg doch arg kompliziert zu sein. Vor allem, wenn ich bedenke, dass meine eigentliche Funktion noch viel komplizierter aussieht.
Kannst du - oder jemand anders hier im Forum - sagen wie ich das mit "separaten" Funktionen in den Griff kriegen kann?
Ich will mal meine Funktion rein mathematisch formulieren:
Dieses Biest hat in meinen Untersuchungen so viele Summanden, dass ich das nicht einfach mal stur runtertippen kann und die Indizes anpasse.
Ich bin für jeden Tipp dankbar!!!
Fredo
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.03.2014, 20:11
Titel:
|
 |
Hallo,
sind die x_i dabei Skalare oder auch Vektoren mit 3 Elementen?
Falls letzteres: in welcher Form soll das an die Funktion übergeben werden? Als Vektor mit 3*n Elementen?
Im Zweifelsfall lässt sich so etwas mit Hilfe einer for-Schleife erledigen.
Grüße,
Harald
|
|
|
Fredo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 19.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.03.2014, 20:23
Titel:
|
 |
Japp, genau letzteres ist der Fall. Übergeben werden soll der Vektor X mit 3k Elementen:
Ja, mit for schlefe wäre es mir am liebsten. Allerdings verweigert MATLAB mir den Dienst wenn ich darin function handles benutzen möchte.
Wie würdest du das mit der for-Schleife anpacken?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.03.2014, 21:23
Titel:
|
 |
Hallo,
die Idee wäre ja auch nicht, innerhalb der Schleife Function Handles zu verwenden, sondern eine Funktion
zu erstellen, in der (mit einer for-Schleife und ohne Function Handles) f berechnet wird, und dann mit
auf diese Funktion zu verweisen.
Grüße,
Harald
|
|
|
Fredo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 19.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.03.2014, 09:10
Titel:
|
 |
au weia
Ja jetzt ist es mir klar! Vielen Dank! Funktioniert.
Grüße
Fredo
|
|
|
|
|
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.
|
|