|
|
| nice_day |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 08.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 21:28
Titel: Zufallsvektor
|
 |
hallo,
ich möchte gerne einen Zufallsvektor generieren mit der Länge Eins. Ansich bekomme ich den Zufallsvektor hin aber nicht die länge Eins. bitte um Hilfe..
gruß
Haki
|
|
|
|
|
|
| joker811 |

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 29.10.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 21:33
Titel:
|
 |
was meinst du denn mit "vektor der länge 1"?
irgendwie versteh ich die frage nicht
|
|
|
|
| nice_day |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 08.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 21:45
Titel:
|
 |
hallo,
ein vektor besitzt eine richtung und eine länge. Die länge wird ja mit dem Skalarprodukt berechnet. Und diese Länge sollte Eins sein.
gruß
Haki
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 21:56
Titel:
|
 |
Hallo,
die ursprüngliche Frage hätte ich auch nicht verstanden, da man unter der "Länge" eines Vektors ebenso gut die Anzahl der Elemente verstehen kann. "Norm" wäre da eindeutiger.
Norm 1 kann man gut hinbekommen, indem man den Vektor durch die Norm teilt:
Bei einem Zufallsvektor ist natürlich auch die Frage, nach welchen Kriterien er zufällig sein soll, und welche Anzahl Elemente er haben soll.
Grüße,
Harald
|
|
|
|
| joker811 |

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 29.10.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 22:04
Titel:
|
 |
|
danke Harald das war nämlich auch mein problem mit der fragestellung
|
|
|
|
| nice_day |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 08.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 22:06
Titel:
|
 |
hallo,
danke für die korrektur...meinte natürlich die Norm....die idee den vektor durch die norm zu teilen hatte ich auch schon gehabt aber das löst mein problem nicht....ich will grad einen vektor bei dem ich das nicht mache muss....also einen zufallsvektor, der mir ohne nachbearbeiten die norm Eins liefert......
gruß Haki
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 22:13
Titel:
|
 |
Hallo,
nochmal die Frage: welche Anzahl Elemente soll der Vektor haben?
Für eine beliebige Anzahl Elemente dürfte das schwer umzusetzen sein.
Bei zwei oder drei Elementen würde ich mit dem bzw. den Winkeln arbeiten. In 2D:
Grüße,
Harald
|
|
|
|
| nice_day |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 08.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 22:15
Titel:
|
 |
Hallo,
sollte eigentlich für eine beliebige Anzahl an Elemente sein.....
gruß
Haki
|
|
|
|
| joker811 |

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 29.10.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 22:16
Titel:
|
 |
jetzt bastel ich die ganze zeit an einer lösung das fällt mir auf die
länge eines vektors wird NICHT durch das Skalarprodukt bestimmt...
oder irre ich mich grade
die schnellste und meiner meinung nach beste lösung ist die von
Harald
warum kannst/darfst du die nicht benutzten?
|
|
|
|
| nice_day |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 08.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2011, 22:54
Titel:
|
 |
hallo,
ich hatte mal vermutet, dass es einen anderen weg geben müsste als der weg über die norm.
ich muss einen globalen optimiere implementieren. Dazu soll ich das Simulated Annealing (SA) verfahren nutzen. dabei brauch ich dann mein zufallsvektor.....
gruß
Haki
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.11.2011, 08:52
Titel:
|
 |
Hallo,
warum verwendest du nicht das bereits in der Global Optimization Toolbox implementierte simulannealbnd?
Vermutungen sind, was das Programmieren angeht, nicht unbedingt ein guter Ratgeber.
Ich sehe zwei Möglichkeiten für Zufallsvektor mit N Elementen:
a) N-1 Winkel erzeugen und dann verallgemeinerte Kugelkoordinaten verwenden.
b) Der beschriebene Weg über die Skalierung mit der Norm. Wenn wichtig ist, dass alle Richtungen gleich wahrscheinlich sind, mit einer Ergänzung:
Grüße,
Harald
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.11.2011, 12:44
Titel:
|
 |
| |
 |
|
Hallo Harald,
Die verallgemeinerten Kugel-Koordinaten und die Verwendung von SIN und COS sind eigentlich nur ineffiziente Umformungen der Division durch die 2-Norm. Ob man das mit dem Satz von Pythagoras oder mit trigonometrischen Funktionen löst, macht im Endeffekt nur einen Unterschied in der Laufzeit.
Die 2-Norm ist die Euklidische Länge und damit läßt sie sich auch durch das Skalar-Produkt berechnen:
x * x' ist übrigens dank des Aufrufs einer BLAS-Funktion ausgesprochen schnell, vor allem deutlich schneller als NORM. Wenn man dies für die Spalten- oder Zeilen-Vektoren einer Matrix such: DNorm2 in den FileExchange Seiten.
Es gibt zwei Wege einen Vektor der Länge 1 mit N zufälligen Elementen zu finden:
1. Das bereits erwähnte v/sqrt(v*v').
2. Man wählt N zufällige Elemente, bildet die kummulierte Summe cumsum(v) und setzt dann zuerst so viele Elemente auf 0, bis die Summe kleiner ist als 1, und schließlich ein Element so, dass die Summe exakt 1 ergibt. Damit hat man natürlich nicht alle N-Elemente zufällig gewählt.
Gruß, Jan
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.11.2011, 12:56
Titel:
|
 |
Hallo Jan,
bei dem direkten Ansatz mit v/sqrt(v*v') sehe ich ein Problem (anhand des 2D-Falls): v ist gleichverteilt auf einem Quadrat. Im Grunde projeziert man alle Punkte eines Strahls auf einen Punkt auf dem Kreis. Da der Strahl aber je nach Winkel unterschiedlich lang ist, würde ich erwarten, dass Winkel um 45 Grad beispielsweise häufiger auftreten als Winkel um 0 oder 90 Grad.
Meine beiden Ansätze versuchen, dieses Problem zu umgehen.
Den zweiten deiner Ansätze finde ich nicht gut, weil die erzeugten Punkte wie schon von dir angedeutet nicht gleichmäßig verteilt sind.
Grüße,
Harald
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.11.2011, 23:27
Titel:
|
 |
Hallo Harald,
Das Argument der Verteilung in einem Quadrat ist gut, jetzt verstehe ich Deinen Ansatz.
Das Einsetzen von Nullen und Einfügen eines benötigten Summanden ist eventuell nicht das, was nice_day sucht. Ob es "gut" ist oder nicht, hängt ganz vom Problem ab.
Gruß, Jan
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 10.11.2011, 09:43
Titel:
|
 |
Hallo Harald,
Noch eine Idee: Mein etwas merkwürdiger Ansatz mit dem harten Setzen des letzen Summanden ist im 2D Fall übrigens identisch zu Deiner Lösung:
Bei verallgemeinerten Kugelkoordinaten ist die Gleichverteilung nicht einfach zu erreichen. Im 2D-Fall z.B. wären die Punkte in der Nähe der Pole viel dichter als am Äquator.
Wie wäre es mit einer Normalverteilung? Die ist doch kugel-symmetrisch:
Oder um einen einzelnen Vektor zu erhalten:
Gruß, Jan
|
|
|
|
|
|
|
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.
|
|