WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

In 100x1 cell nach bestimmten String suchen?

 

Anna_Bauer
Forum-Newbie

Forum-Newbie



Beiträge: 7
Anmeldedatum: 05.04.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 05.04.2011, 13:06     Titel: In 100x1 cell nach bestimmten String suchen?
  Antworten mit Zitat      
Hallo Leute,

ich bin neu hier also bitte nicht zu hart sein, wenn ich etwas falsch mache =)

Ich habe ein Problem und bin echt schon am verzweifeln...
Habe auch lange hier das Forum und Google durchsucht aber leider nichts gefunden, dass mit helfen könnte.

Und zwar möchte ich wissen, wo in "F101108_Text" der String "n." vorkommt. n wird in einer Schleife hochgezählt, d.h. es wird erst nach 1. dann nach 2. dann nach 3. usw gesucht. Leider kommt dann auch 11. und 12. vor wo mir bei der suche nach 1. auch der Index von 11. angegeben wird, was leider nicht so sein soll.
Das wollte ich so lösen:

Code:
a = regexpi(F101108_Text(:,1),[i_con,'[.]']);


Hier kommt als Ergebniss bei der Suche nach 1. folgendes raus:
[]
[]
1
1
1
1
[]
...
[]
2
2
2
[]
...

Soweit ich das begriffen habe wird mir solange 1 ausgegeben, wie hintereinander das gesuchte 1. gefunden wird, dann kommen viele Zellen, in denen etw. anderes steht bis dann 11. kommt. Alle 11. (in denen auch ein 1. vorkommt) wird dann als 2 ausgegeben.

Nun wollte ich in dieser Cell suchen, in welchen Indexwerten sich eine 1 befindet.

Code:
index = find(a(:,1)==1);


Leider geht "find" nicht in einem Cell, ich weiß aber nicht wie ich nun herausfinden soll, wo sich eine 1 befindet, denn wenn ich cell2mat mache steht da nur
1
1
1
1
2
2
2

drinnen, da die leeren Zellen nicht übernommen werden.
Ich kann auch mit "regexprep" die leeren Zellen nicht durch eine 0 oder so ersetzen, da es bei cell nicht geht.


Ich hoffe so, dass mir hier jemand helfen kann.
Wäre echt nett =)

MfG
Anna
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.04.2011, 19:03     Titel:
  Antworten mit Zitat      
Hallo Anna,

Herzlich willkommen bei goMatlab.

Ich kann Deine Frage fast verstehen. Bitte poste noch ein paar relevante Strings aus dem Input und wonach Du genau suchst. Offenbar ist es nicht der String 'n.', sondern etwas wie '1.' und '2.'.
Ich vermute REGEXPI produziert eine zu kompizierte Ausgabe.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 05.04.2011, 20:10     Titel:
  Antworten mit Zitat      
Hallo

es ist immer gut, wenn auch ein kleines Beispiel erstellt wird, dann ist es einfacher das Problem nachvollziehen

vielleicht hilft dir folgendes:
Code:

F101108_Text   = {'1.';'2.';'1.';'11.'}
i_con  = '1'
a         = regexpi(F101108_Text(:,1),['^',i_con,'[\.]']);
find(~cellfun('isempty',a))

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Anna_Bauer
Themenstarter

Forum-Newbie

Forum-Newbie



Beiträge: 7
Anmeldedatum: 05.04.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 06.04.2011, 08:12     Titel:
  Antworten mit Zitat      
Hallo,

danke erstmal für den Tipp, ein kleines Beispiel zu nennen. Das werd ich mir merken =)

@denny
VIELEN VIELEN DANK

Genau das hab ich gebraucht! Very Happy
Mein Problem war immer, dass ich nicht wusste wie ich suchen kann, dass es mir nur die 1. und nicht die 11. sucht.

Aber jetzt funktioniert des endlich =)

Könntest du mir bitte noch erklären was genau das '^' und der \ vor dem Punkt macht?

MfG
Anna
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.04.2011, 12:13     Titel:
  Antworten mit Zitat      
Hallo

das Dach-Zeichen ^ => teilt dem REGEXP dass ab Anfang des Strings verglichen werden soll.
Per Default sucht REGEXP überall die Stelle wo die Strings sich gleichen. Mit Dach-Zeichen unterbindet man das und sagt das Matching ab erstem Buchstabe stattfinden soll.

Slash Zeichen \ => dient eigentlich dem Escapen, ich habe aber übersehen dass du den Punkt bereits in die Eckige Klammern gesetzt hast
Escapen heißt dass Symbol soll dann nicht wie Steuerzeichen betrachtet werden , sondern in alphanumerischen Bedeutung

also nach Punkt konnte entweder so
Code:

a         = regexpi(F101108_Text(:,1),['^',i_con,'\.']);
 


oder so suchen
Code:

a         = regexpi(F101108_Text(:,1),['^',i_con,'[.]']);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Anna_Bauer
Themenstarter

Forum-Newbie

Forum-Newbie



Beiträge: 7
Anmeldedatum: 05.04.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 06.04.2011, 12:24     Titel:
  Antworten mit Zitat      
Hallo,

danke für die gute Erklärung, jetzt weiß ich da auch bescheid.

Und nochmal danke für alles, hast mir sehr geholfen =)

MfG
Anna
_________________

............................................................
| Mach dein Ding und leb dein Leben Wink |
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.