|
|
Teilmatrix mit Kriterien ausgeben lassen |
|
Alpha23 |

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 11.09.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 13:40
Titel: Teilmatrix mit Kriterien ausgeben lassen
|
 |
|
 |
|
Hallo!
Bevor irgendwer sofort eine vermeintliche Lösung postet:
KEINE SCHLEIFEN!!!
Einige scheinen das nur mit so einer Meldung davor zu verstehen. Natürlich nichts gegen die Nutzer, die sich tatsächlich die Frage erst KOMPLETT durchlesen, dann auch noch ÜBERLEGEN und dann erst posten
Sollte das Problem wirklich nicht ohne Schleifen lösbar sein, dann bitte auch nur diese Info posten, weil das kann ich ja.
Ich suche eine Möglichkeit, eine Matrix anhand von Kriterien auszudünnen.
Was vorliegt:
- Matrix A, Größe n x 2
- eine Matrix MAX_A, die für jeden der unterschiedlichen Werte aus der ersten Spalte ein Maximum festlegt
Was ich brauche:
eine Matrix A_neu, die nur die Zeilen enthält, für die der Eintrag der rechten Seite dem Kriterium entspricht, das unter dem Index aus der ersten Spalte steht.
Beispiel:
Was ich brauche:
A_neu enthält nur noch die Zeilen aus A, die in der zweiten Spalte nicht über dem Maximum aus MAX_A liegen.
Danke für eure Vorschläge OHNE SCHLEIFEN!
|
|
|
|
|
derOli |

Forum-Meister
|
 |
Beiträge: 579
|
 |
|
 |
Anmeldedatum: 19.03.08
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: 2010a
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 15:00
Titel:
|
 |
Hi wenn ich dich richtig verstanden habe müsste es so gehen:
Aber dein Beispiel ist glaube ich etwas fehlerhaft. Der erste Wert sollte nicht im Ergebnis stehen. Oder?
Viele Grüße,
der Oli
|
|
|
Alpha23 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 11.09.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 15:51
Titel:
|
 |
Argh, natürlich! Das, was ich die ganze Zeit sowieso mache...
Vielen Dank! =)
Was mich allerdings wundert: Wenn ich das Aussortieren per Schleife mache, dann geht's viel schneller! Warum? Hat das was damit zu tun, dass MATLAB dann nicht die Differenz berechnen muss? Ist jedesmal ein Vektor mit knapp 20.000 Einträgen.
|
|
|
derOli |

Forum-Meister
|
 |
Beiträge: 579
|
 |
|
 |
Anmeldedatum: 19.03.08
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: 2010a
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 16:24
Titel:
|
 |
Ja stimmt,
man könnte ja auch einfach größer als, statt minus nehmen, dann sollte es schneller gehen, also:
Grüße,
derOli
|
|
|
Alpha23 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 11.09.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 16:47
Titel:
|
 |
Richtig. Oder auch
Der Vektor, der die Zeilen abruft ist ja schon logical.
Trotzdem ist die Schleife aus unerfindlichen Gründen schneller... Die läuft durch die Anzahl der unterschiedlichen Einträge der ersten Spalte von A und hängt die passenden Zeilen an die Ausgabe ran. Vom Gefühl her hätte ich gesagt, dass das länger dauern würde.
|
|
|
Alpha23 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 11.09.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 18:06
Titel:
|
 |
Besser zu verstehen ist das Ganze, wenn's in A noch eine dritte Spalte gibt mit nur unterschiedlichen Werten, die man sich ausgeben lassen will nach dem Kriterium von vorne.
Hintergrund kommt aus der Graphentheorie: A ist eine Liste, die jedem Knoten eines Graphen (letzte Spalte) ein Cluster (erste Spalte) und eine Zeit (zweite Spalte) zuordnet. Jetzt soll von einem Knoten aus eine Graphensuche gestartet werden, ohne dass Knoten erreicht werden, die ein zeitliches Maximum für das jeweilige Cluster, dem sie angehören, überschritten wird. In der Liste sollen alle Knoten stehen, die aussortiert werden müssen.
Nach längerem Rumprobieren hat sich eine Schleife letztlich als die schnellste Alternative ergeben:
Irgendwie fasziniert mich das...
|
|
|
|
|
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.
|
|