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

Cellarray unterteilen

 

Silli

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2008, 01:51     Titel: Cellarray unterteilen
  Antworten mit Zitat      
Hi,

ich bräuchte mal eine Anregung wie ich folgendes am besten realisieren kann.

-> Aus einer Textdatei wird ein Datensatz mit ~50000 Wörtern eingelesen, was ich bis jetz einfach nacheinander per Cell Array realisiert habe:
Code:

cellarray_words = cell(number_of_words,1);
data=fopen('data.txt');
i=0;                            % Lauf-Parameter
while feof(data)==0
    i=i+1;
    s=fgetl(data);  
    cellarray_words(i,1) = {s};
 


Im späteren Verlauf soll dann jedoch ein bzw. viele vom Programm "generierte/s" Wort/Wörter auf ein Match mit einem Wort in dieser Liste überprüft werden. Logischerweise ist es sehr ineffizient nun für jedes Wort die komplette Liste abzufahren. Was ich nun tun möchte ist, das Cell Array zu unterteilen (oder gleich in der folgenden Form einlesen). Ich denke am besten würde sich eine Art Sortierung nach der Wortlänge anbieten um die Anzahl der zu überprüfenden Wörter zu minimieren. GGf könnte man dann in einem zweiten Schritt noch einmal nach den Anfangsbuchstaben sortieren.
Leider habe ich keinen blassen Schimmer wie ich das mit den CellArrays von Matlab realisieren kann bzw. wie ich dann anschließend auf die richtigen Elemente zugreifen kann.

Ich hoffe die Problematik ist klar geworden und jmd kann mir einen Tipp bzw. Beispielcode posten.

Mfg


Silli

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2008, 01:54     Titel:
  Antworten mit Zitat      
Nachtrag:

Vermutlich würde es bereits reichen wenn mir jemand einen Tipp geben kann wie ich aus dem schon bestehenden Cell Array in der Vergleichsfunktion einfach alle Einträge extrahieren kann die mit einem bestimmten Anfangsbuchtaben anfangen bzw. eine bestimmte Länge haben.
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 12.04.2008, 09:13     Titel:
  Antworten mit Zitat      
Deine Einlese Funktion konnte schneller laufen, wenn Sue zB. TEXTREAD verwenden würdest. Kann Dir kein konkretes Kommando schreiben, da ich nicht genau die Formatierung der Datei kenne, aber von Deinem Code ausgehend sollte das reichen
Code:
data = textread('data.txt','%s')

Läuft viel schneller, als mit FGETL

[qoute] lle Einträge extrahieren kann die mit einem bestimmten Anfangsbuchtaben anfangen bzw. eine bestimmte Länge haben[/quote]
schau die Funktion STRCMP(solltest Du schon kennen), dann STRCMPI, STRNCMP und auch STRNCMPI.

Ansonsten sollten noch die Funktionen ISMEMBER und UNIQUE in Frage kommen.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2008, 17:43     Titel:
  Antworten mit Zitat      
Danke Very Happy
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 14.04.2008, 19:46     Titel:
  Antworten mit Zitat      
Du benötigst den Befehl cellfun. Leider ist die Hilfe dazu nicht sehr verständlich. Man kann cellfun mit strfind oder strmatch kombinieren, um alle strings zu durchsuchen. Anwendung zum Beispiel so

Code:

zeile = find(cellfun('isempty', strfind(L,'Suchtext')) == 0);
 


sucht das Vorkommen des Wortes Suchtext ina llen Einträgen des cell-arrays L.
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 14.04.2008, 19:48     Titel:
  Antworten mit Zitat      
Ach ja - noch ein Hinweis: wenn Du nur mit strings arbeitest, wäre evtl. ein anderes Programm als Matlab (zB Perl) schneller. Zumindest zum vorsortieren....
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
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 - 2024 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.