Binning Problem < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 12:28 Mi 23.04.2008 | Autor: | pAt84 |
Hallo,
ich habe hier folgendes Problem. Ich habe einen Vektor mit Elementen zwischen 0 und pi, also zum beispiel.
A = rand(3)*pi;
B = A(:);
B wäre jener Vektor. Dazu ist noch ein Vektor W gegeben der jedem Element aus B ein Gewicht zuweist. Sagen wir
A = rand(3);
W = A(:);
Nun möchte ich diese Gewichte in eine bestimmte Anzahl von Behältern (bins) einordnen. D.h. für jedes Element in B wird festgestellt in welchen Behälter es gehört und das zu B gehörige Gewicht wird zu diesem Behälter hinzugefügt (aufsummiert). Das Binning selbst habe ich schon gelöst.
Angenommen bins = 4 gibt die Anzahl der bins an, dann mache ich das folgendermaßen:
ind = floor(B/pi*bins)+1;
ind enthält dann die Binzahl. Das funktioniert nicht falls in B ein Element tatsächlich genau pi ist. Das Ereignis fange ich ab. Alles kein Problem.
Mein Problem liegt beim Einordnen der Gewichte in die Bins. Natürlich kann ich das über eine for-Schleife machen (so mach ich es im Moment) aber das ist ja nicht wirklich schnell. Ich habe zwar eine Lösung die mit repmat ein logisches Array erstellt über das ich dann einfach aufsummiere. Diese Lösung ist allerdings langsamer als die for-Schleife.
Ich hoffe jemand kann mir hier helfen.
Vielen Dank!
Pat
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:37 Mi 23.04.2008 | Autor: | pAt84 |
Leider gibt es keinen Punkt der mich selbst antworten lässt oder ich habe ihn nicht gefunden. Die Lösung des Problems ist jedenfalls:
full(sparse(ind, 1, W, bins, 1))
Grüße
Pat :D
|
|
|
|