|
|
| Weta |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.09.2011, 17:24
Titel: Indices finden
|
 |
Hallo!
Ich habe ein 500 x 3 char-Matrix namens 'T'.
Ich möchte nun alle Indizes (entweder als Zahlen oder als 1/0 Vektor) von 'T' finden, für die die Zeile gleich 'WWW' ist.
ich versuche es irgendwie mit T(:, == 'WWW' aber das passt von den Dimensionen anscheinend nicht. Mir ist nicht ganz klar warum und wie ich es besser machen kann?
Gruß,
Weta
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.09.2011, 18:15
Titel:
|
 |
|
|
|
| Weta |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.09.2011, 21:08
Titel:
|
 |
Hallo Harald!
Danke, deine Lösung funktioniert, aber:
1. verstehe ich sie nicht. 'all(T,2)' testet ja, ob bei T alle Elemente entlang der 2.Dimension verschieden von 0 sind. Da kommt doch logisch 1 oder 2 raus, und wie kann ich das dann mit 'W' vergleichen?
2. Funktioniert die Lösung ja so leider nur, wenn ich nach drei gleichen Buchstaben suche. Auf z.B. 'ABC' ist sie leider nicht übertragbar, was ich aber auch bräuchte
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.09.2011, 21:30
Titel:
|
 |
Hallo,
mich würde es erstaunen, wenn meine Lösung funktionieren würde.
Sorry, ein Schreibfehler - es müsste korrekt heißen:
Allgemeiner würde das funktionieren:
Grüße,
Harald
|
|
|
|
| Weta |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.09.2011, 18:14
Titel:
|
 |
Hi Harald,
gut, das funktioniert, ist nur relativ langsam.
Folgende Lösung habe ich gefunden, die schneller ist, allerdings weniger elegant aussieht
Wofür hier genau das "full" benötigt wird, ist mir jedoch auch nicht klar...
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 12.09.2011, 22:14
Titel:
|
 |
Hallo Weta,
| Zitat: |
| gut, das funktioniert, ist nur relativ langsam. |
Langsam? 2.3 GHz Core2Duo, Matlab 2009a:
Das "full" wird genau genommen gar nicht benötigt, darum kann man es auch einfach weglassen.
Ich würde also Haralds Methode bevorzugen.
Gruß, Jan
|
|
|
|
| Weta |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.09.2011, 08:02
Titel:
|
 |
Hallo Jan,
nein, ich meinte diese Lösung:
Da ich ja auch Strings, die aus verschiedenen Buchstaben bestehen, suchen muss.
Und bei mir funktioniert
nicht. Da kommen nur nullen raus, verwende ich noch "full" kommt das richtige Ergebnis raus
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 13.09.2011, 10:53
Titel:
|
 |
| |
 |
|
Hallo Weta,
| Zitat: |
Und bei mir funktioniert
nicht. Da kommen nur nullen raus, verwende ich noch "full" kommt das richtige Ergebnis raus |
Das ist merkwürdig. FULL wandelt eine SPARSE Matrix in eine normale Matrix um. Allerdings verwendest Du überhaupt keine SPARSE-Matrizen, sondern eine CHAR-Matrix, die immer FULL ist.
Eventuell liegt Dein Problem am 'K'? Die zweite Spalte sollte auch 'W' sein, oder?
Eine alte aber sehr wichtige Regel beim Programmieren: Wenn der Computer auf bestimmte Inputs magisch reagiert, also unerwartete Ergebnisse bringt, die eigentlich vom Code gar nicht erzeugt werden dürften, befindet sich ein unerkannter Bug im Code. Computer sind für Magie unempfindlich!
Es gibt nur extrem selten Ausnahmen dabei. Ich habe in meinen 30 Jahren Programmiererfahrung erst eine erlebt: Die Floating-Point-Einheit meines Prozessors war defekt und ein C-Programm brachte unterschiedliche Ergebnisse für 2+2 und 2.0+2.0. Das Problem hatte sich aber nach einer Stunde erledigt, als der Rest des Prozessors auch noch durchbrannte.
Eine andere Lösung wäre:
Aber STRMATCH wird nicht mehr länger unterstützt und ist langsam.
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.
|
|