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

Cell Struktur Probleme nach Anwendung von regexpi

 

Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 28.09.2010, 03:02     Titel: Cell Struktur Probleme nach Anwendung von regexpi
  Antworten mit Zitat      
Hallo,

Ziel war eigentlich nur Zahlen aus einem Cell Array zu bestimmen. Hier der Code:
Code:

test = {'x=10blabla'; 'y=weissderGeier50'};
new = regexp(test, '\d*', 'match');
 

Als Ergebnis wollte ich einen Vektor erhalten der nur die Ziffer 10 und 50 enthält, soweit so gut. Nun der Aspekt den ich nicht verstehe und umgehen möchte.

Klicke ich auf den Cell Array "test" auf das erste Feld (im Workspace), so erhalte ich den Wert 'x=10blabla', d.h. test{1} ergibt den Wert.
Führe ich nun meine Suche mittels regexp nach der Zahl (was ohne Probleme klappt) und Klicke im erstellten Cell Array "new" auf die 1. Zelle so sehe ich den Wert 10. Joch kann ich dann nochmal draufklicken, und erhalte nochmals den Wert 10. Dies entspricht new{1}{1}.

Warum ensteht nach dem regexpi Befehl eine weitere Zelle und wie kann ich das unterbinden, da dies verhindert die Zeichen mittels str2double in Zahlen formatieren zu können?

Zusammenfefasst:
Der Cell Array "test" hat folgende Struktur für die 1. Zeile: 1x1 cell-->wert
Nach dem Suchen mit regexp hat der neue Cell Array "new"für die 1. Zeile folgende Struktur: 1x1 cell-->1x1 cell-->Wert (Also eine Ebene mehr).

WARUM?

Danke für jegliche Hilfe

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen


Sco
Themenstarter

Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 08.10.2010, 19:18     Titel:
  Antworten mit Zitat      
schieb*
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.10.2010, 19:26     Titel:
  Antworten mit Zitat      
Hallo,

ich bin mir nicht darüber im klaren, warum das so aussieht, kann aber eine Problemlösung anbieten, die das weiterarbeiten ermöglicht:
Code:
new = [new{:}]


Oder damit die Dimensionen erhalten bleiben:
Code:
new = reshape([new{:}], size(new))


Grüße,
Harald

P.S.: Auch wenn das gerade dazu verführen mag - das Schieben bitte nicht zur Gewohnheit machen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Themenstarter

Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 08.10.2010, 20:16     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank! Naja wegen dem Schieben, was soll ich sagen.... Man hofft halt, dass doch jemand die Loesung weiss. Ich persoenlich sehe da keinen grossen Unterschied, ob ein Thread nun nur den 1. Post oder als 2. Post ein 'schieb' enthaelt, eine Antwort fehlt. Wann (wie in diesem Fall) dadurch eine Loesung/Ansatz gepostet wird, dann hat doch die ganze Community etwas davon, anstatt nur einem Thread ohne Antwort?

MFG

Sco
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: 09.10.2010, 01:17     Titel: Re: Cell Struktur Probleme nach Anwendung von regexpi
  Antworten mit Zitat      
Hallo Sco,

Code:

test = {'x=10blabla'; 'y=weissderGeier50'};
new = regexp(test, '\d*', 'match');
 

REGEXP kann ja mehrere Zahlen im String finden, z.B. in "y=12w8". Mit dem 'match' flag müssen dann mehrere Strings zurückgeliefert werden, wozu ein cell string nötig ist.
Wenn nun das input bereits in cell string ist, muss die Ausgabe ein cell Vektor sein, der cell strings enthält.

Wenn Du aber sicher bist, dass nur eine einzelne Zahl vorkommt, hänge noch das Flag 'once' an. Dann wird auch wieder ein unverschachtelter cell string zurückgeliefert.

Man kann gut über Vor- und Nachteile des "Schiebens" diskutieren. Ich habe nicht den Eindruck, dass das Forum zur Zeit davon beeinträchtigt wird. Aber Harald schrieb ja auch "nicht zur Gewohnheit machen". Dem stimme ich zu. Ein bisschen mehr Chaos könnte das Forum aber auch verkraften.

Aber ich gebe unumwunden zu, dass ich wohl ein großer Antwort-Schieber bin: "nein, das geht ohne EVAL besser..."

Gruß, Jan
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.