|
|
Strings finden ohne for Schleife |
|
laternenjoe |

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 25.02.15
|
 |
|
 |
Wohnort: Bochum
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.07.2015, 14:49
Titel: Strings finden ohne for Schleife
|
 |
Hallo,
Ich habe folgende Aufgabe:
Ich habe 2 Vektoren mit chars die alle die gleiche Länge habe. Die beiden vektoren haben unterschiedliche Länge.
zB.
Gibt es eine Möglichkeit, wie ich hier mit wenig Matlab Befehlen/ohne Schleife herrausfinden kann, wie oft die Werte von A jeweils in B vorkommen?
Dann sowas wie:1 kommt 0 mal in B vor, 2 kommt 2 in B mal vor, 3 kommt 2 mal in B vor,...
Ich müsste also für jeden Index von A eine Zahl haben, die mir sagt wie oft dieser string in B vorkommt?
[row,col]=find(A==B(k))
und dann über jedes Element via forSchleife hatte ich im Sinn, aber leider nur mit forSchleife.
ismember(A,B,'rows')
sagt leider nur, ob ein Wert vorkommt. Gibt es da einen Trick 17 mit dem ich das hinbekomme?
Danke
Grüße Laternejoe
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.07.2015, 15:35
Titel:
|
 |
Hallo,
Spielt Performance eine wesentliche Rolle? Falls nicht, würde ich die for-Schleife verwenden.
Ansonsten:
wieviele Strings sind denn jeweils in A und B?
Kommen bestimmte Strings typischerweise sehr oft vor? Dann bieten sich evtl. categoricals an. Falls die Daten aus einer Textdatei kommen, kann man sie in aktuellen Releases direkt als categorical einlesen.
Ich vermute, in der Realität sind es keine Zahlstrings?
Grüße,
Harald
|
|
|
laternenjoe |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 25.02.15
|
 |
|
 |
Wohnort: Bochum
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.07.2015, 15:51
Titel:
|
 |
Ja, ich wollte es wegen der Performance machen. Eine sehr wesentliche Rolle spielt die nicht, aber es dauert schon etwas länger mit For.
Das sind alles Datenstrings der Form 'dd.mm.yyyy'. Also haben A und B jeweils 10 Spalten.
In A sind 710 strings und in B 40-50.000. Wenn ich das mit ForSchleifen mache dauert das etwas, da wollte ich das verringern. Ich schau mir mal gleich categorize an. Ansonsten lass ich die ForSchleife.
Danke aufjedenfall!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.07.2015, 15:56
Titel: Re: Strings finden ohne for Schleife
|
 |
Hallo laternenjoe,
Zitat: |
Ich habe 2 Vektoren mit chars die alle die gleiche Länge habe. Die beiden vektoren haben unterschiedliche Länge. zB.
|
Das zweite ist keine Vektor vom Typ char. Was bedeutet "die alle die gleiche Länge haben"? Ein
char
besitzt immer ein Zeichen. Wieso spielt es eine rolle, ob beide unterschiedliche Längen haben?
Siehe
histc
(bzw. das neue
histcount
) und
accumarray
. Beides kann das in einer Zeile lösen.
Gruß, Jan
|
|
|
laternenjoe |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 25.02.15
|
 |
|
 |
Wohnort: Bochum
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.07.2015, 16:02
Titel:
|
 |
Sorry Jan,
Ich hatte die Apostrophe vergessen. bzw. num2str()
richtig heißt es
size(A)=[710,10]
size(B)=[45000,10]
Ja B ist nach dem Einlesen aus Excel erst noch ein Cell-Array. Das hab ich dann per char() auch zu einem Chararray gemacht, damit ich es mit A vergleichen kann.
Das mit der unterschiedlichen Länge habe ich deshalb erwähnt, weil ich vermutet habe, dass es für einige Funktionen nur möglich ist zu vergleichen, wenn beide die Länge/Dimension haben.
Zuletzt bearbeitet von laternenjoe am 21.07.2015, 16:04, insgesamt einmal bearbeitet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.07.2015, 16:03
Titel:
|
 |
Hallo,
dann würde ich die Datumsangaben mit
datenum
in Zahlen umwandeln.
Falls alle Vorkommnisse von B in A zu finden sind, ginge dann
Andernfalls könnte
accumarray
helfen.
Grüße,
Harald
|
|
|
laternenjoe |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 25.02.15
|
 |
|
 |
Wohnort: Bochum
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.07.2015, 16:09
Titel:
|
 |
Ja, sind alle in A zu finden. Danke euch beiden.
|
|
|
|
|
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.
|
|