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

String

 

Platin
Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2010, 18:52     Titel: String
  Antworten mit Zitat      
Hallo an Alle,

ich scheiter glaube ich gerade an einem wirklich elementaren Problem.
Es geht darum das ich eine Matrix M eingelesen habe eine 1x100 Matrix.
In jedem eintrag steht nun eigentlich Text. Also Haus, Baum etc.
Jetzt möchte ich aber nach diesem "Text" im Anschluss mit der Funktion regexp filtern, was aber nicht funktioniert, weil in diesen einträgen nun ja nicht wirklich Text steht sondern anscheinend eine andere Art von Eintrag.
Denn wenn ich eingebe
Code:

Dann hat G im Workspace die Größe 1x4.
Wenn dieser eintrag in meiner Matrx an stelle 52 steht, ich also eingebe M[52], dann steht da die Größe 1x20 oder so. Also was größeres, also nicht das selbe.
Dementsprechend kann das nicht das selbe sein und deswegen findet er bei mir mit dem Befehl regexp auch nichts wenn ich als string in M[52] suchen lasse, Gebe ich aber als string direkt 'Haus' ein dann findet er was wenn ich zum Bsp nach ^Haus filtern lasse.
Ich habe schon versucht das ganze mit num2str umzuformen aber das brachte keine Erfolg.
Habt ihr ne Idee?
Der mus aus meiner Matrix beim auslesen der Einträge 'Haus' auslesen. also mit der Größe 1x4 und nicht Haus mit der Größe 1x20 oder so, sonst kann ich das Wort nicht filtern.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 30.11.2010, 19:31     Titel:
  Antworten mit Zitat      
Hallo Platin,

ist in deiner 1x100 Matrix vll jede Zeile mit Leerzeichen aufgefüllt? Ich meine ich weiß ja nicht wie deine Matrix aussieht obs ein Cell ist oder was auch immer...

versuch mal:

Code:


length(strrep(M{52},' ',''))

 


wenn da nun 4 rauskommt wurde diese mit Leerzeichen aufgefüllt...

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2010, 20:33     Titel:
  Antworten mit Zitat      
Ok versuche ich morgen gleich mal und schreibe dann hier was da raus gekommen ist.
Aber das glaube ich nicht, weil wenn ich dann danach filtern würde müsste ich das Wort trotzdem finden.
Könnte es noch an was liegen? ich habe das Gefühl dass das irgendwie ne geschichte mit string, array, cell etc ist.
Was ich vorhin ausversehen falsch geschrieben habe ist, das ich auf das Element nur folgendermaßen zugreifen kann:
Code:

Müsste sich dann doch um ne Cell handeln, oder ?

Danke dir erstmal

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 30.11.2010, 22:44     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

In jedem eintrag steht nun eigentlich Text. Also Haus, Baum etc.

...also ist es eine Cell.
Zitat:

Jetzt möchte ich aber nach diesem "Text" im Anschluss mit der Funktion regexp filtern, was aber nicht funktioniert, weil in diesen einträgen nun ja nicht wirklich Text steht sondern anscheinend eine andere Art von Eintrag.

Es gibt keine andere Art von Eintrag, Text ist Text. Es könnte maximal sein, dass du eine Mehrfach-Cell erzeugt hasst, z.b:
Code:

doublecell = {{'Haus'},{'Baum'}}
% Zugreifen könntest du darauf folgendermassen:
doubecell{1,1}{1,1} % Ergibt 'Haus'
 

Natürlich ist dies aber nur eine Annhame, poste doch bitte genau wie du diese Textcell erzeugt hasst, dann lässt es sich besser nachvollziehen.

Zitat:

Denn wenn ich eingebe:
Code:

Dann hat G im Workspace die Größe 1x4.

1. Also dieser Code ist so nicht valide, solange Haus keine Variable ist.
2. Falls du dies hier meintest
Code:

G = 'Haus'
 

so ist es doch klar das es einen 1x4 Vektor ergibt. Du weist der Varibale G den "Wert" Haus zu und das Wort Haus hat 4 Buchstaben (1x4).

Ich denke jedoch du möchtest nach dem Wort Haus in G suchen oder? Hierfür müsstest du im Allgemeinen den Vergleichsoperator verwenden, also:
Code:

G == 'Haus'
 

Dies ist bei Cellarrays allerdings so nicht möglich, hierfür kannst du wie gesagt den Befehl regexp, oder z.B. auch strcmp verwenden:
Code:

test = {'Haus','Baum','Raum','Daumen','hoch','tief','los'}; % CellArray mit Text
regexp(test,'Haus')
strcmp(test,'Haus')
 


Wenn dies deine Frage nicht beantwortet, so liegt es daran, dass ich nicht 100%ig sicher war was du wolltest. In dem Fall erstell wie bereits gesagt, mal ein Minimalbeispiel deines Problems.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 00:13     Titel:
  Antworten mit Zitat      
Ja danke euch erstmal.
Schicke morgen mal etwas aus meinem Code.
Das 'Haus' = 1x4 ergibt ist kein wunder. Nur das G{52} (in der Cell steht Haus) =27 ergibt.
Das heißt wenn ich eingebe:
Code:
regexp(G{52},'^Haus','match')
findet er nichts. Gebe ich aber ein
Code:
regexp('Haus','^Haus','match')
findet er Haus.
als ich dann weiter geguckt habe warum das so ist fand ich wie gesagt diese oben beschriebenen Größenunterschiede, die ich mir nicht erklären kann.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 15:08     Titel:
  Antworten mit Zitat      
Hey Marco du hast recht gehabt.
Es kommt die selbe Größe heraus wenn ich
Code:
eingebe.
Aber dann habe ich gleich 2 Fragen.
1. Wie kriege ich die Leerzeichen entfernt
2. Warum findet er, nur weil Leerzeichen davor oder dahinter sind, nichts wenn ich den Befehl
Code:
regexp(M{52},'^Haus',match)
oder
Code:
regexp(M{52},'Haus$',match)
?
Weil die Leerzeichen werden ja bestimmt nur von einer Seite, also von vorne oder hinten angefügt. Einer der beiden Befehle müsste also was finden, oder ?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 15:14     Titel:
  Antworten mit Zitat      
Ok ich habe es hinbekommen indem ich die leerzeichen mit
Code:
entfernt habe.

Danke euch.
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 15:38     Titel:
  Antworten mit Zitat      
Hey ich schon wieder ^^.
Was ich jetzt nicht hinebkomme ich eine Schleife zu schreiben die mir bei allen Einträgen der Matrix M die Leerzeichen entfernt.
Ich dachte irgendwie so:
Code:
M2=[];
for ee=1:Anzahl
M2=strrep(M{ee},' ','');  
M=[M M2];
endfor;

Aber das geht irgendwie nicht richtig.
Was mache ich falsch ?
Als Fehler gibt er:
Code:
error: invalid concatenation of cell array with matrix


Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.12.2010, 17:28     Titel:
  Antworten mit Zitat      
Hallo benutze STRTRIM

Code:

M={' Haus ',' Dach'}

M= strtrim(M)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2010, 09:34     Titel:
  Antworten mit Zitat      
Hey danke für die Antwort.
Habe ich versucht, geht aber nicht:
Hier mein Code:
Code:

M2=[]
for ee=1:len
M2=strtrim(M{ee});  
M=[M M2];
endfor;
 

hier der Fehler:
Code:
error: invalid concatenation of cell array with matrix

Ist meine Schleife vllt falsch?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2010, 09:58     Titel:
  Antworten mit Zitat      
Also jetzt läufts soweit aber mein Problem ist die Datenausgabe.
Vorher war M eine Cell und jetzt ist es ein langer Text. Wie kann es realisieren das M wieder ein Cell wird ? diesmal eben blos mit den Einträgen ohne die Pausen ?
Hier mein bisheriger Code:
Code:

M2=[]
for ee=1:len
M2={M2 strtrim(M{ee})};  
endfor;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2010, 10:11     Titel:
  Antworten mit Zitat      
Man ich bin ein Trottel.
Ich brauche keine Schleife.
Dass wolltest du mir wahrscheinlich sagen.
Danke dir.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.12.2010, 14:35     Titel:
  Antworten mit Zitat      
Platin hat Folgendes geschrieben:

Ich brauche keine Schleife.
Dass wolltest du mir wahrscheinlich sagen.
Danke dir.

Grüße


Das stimmt, ich dachte mein Beispiel drückt das ganz deutlich aus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2010, 14:39     Titel:
  Antworten mit Zitat      
Ja, ne war es ja auch. Aber es war glaube ich noch zu früh am morgen.
Hättest im zusammenhang mit deiner antwort, ruhig das wort trottel mitkopieren können^^ hehe.

Danke dir nochmal.

Grüße
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.