|
Plunder |

Forum-Anfänger
|
 |
Beiträge: 18
|
 |
|
 |
Anmeldedatum: 14.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 09:15
Titel: Alternative zu "strcmp"
|
 |
Hallo zusammen,
ich habe ein Skript das mehrere Txt Files nach einer Liste von Begriffen durchsucht.
Die Suchbegriffe liegen in einem Cell-Array. Die txt Files werden nacheinander geöffnet und in ein Cell-Array geschrieben (Jedes Wort ist eine Zelle)
Dann vergleiche ich mit der Funktions strcmp die beiden Cell-Arrays.
Das ganze funktionniert auch wie es soll allerdings würde ich es gerne noch etwas verändern.
Der Begriff nachdem ich Suche ist ein Dateiname. In den txt Files taucht der Dateiname samt einem Ordnerpfad auf. Der ist momenten immer der gleiche. Sodass ich das Array mit den Suchworten einfach um den Pfad erweitern konnte.
Allerdings wäre es schöner wenn ich einfach nur nach dem Dateinamen suchen könnte.
Mit strcmp geht dass leider nicht, weil er nur nach identischen Begriffen sucht.
Hat jemand eine Idee?
strfind geht irgendwie nicht, weil die Arrays unterscheidliche Größen haben.
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 09:29
Titel:
|
 |
Zitat: |
Mit strcmp geht dass leider nicht, weil er nur nach identischen Begriffen sucht. |
du könntest den ordnerpfad ja mit angeben bei der suche wenn der eh immer gleich ist.
Zitat: |
strfind geht irgendwie nicht, weil die Arrays unterscheidliche Größen haben. |
das kann ich nicht nachvollziehen. aussagen wie "geht irgendwie nicht" enthalten leider nur sehr wenig nützliche information. ein minimalbeispiel wäre hier hilfreich ^^
_________________
richtig Fragen
|
|
|
Plunder |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 18
|
 |
|
 |
Anmeldedatum: 14.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 14:50
Titel:
|
 |
[quote="Winkow"]
Zitat: |
Mit strcmp geht dass leider nicht, weil er nur nach identischen Begriffen sucht. |
du könntest den ordnerpfad ja mit angeben bei der suche wenn der eh immer gleich ist.
Genau das mache ich momentan. Allerdings würde mein Chef das gerne allgemein haben. Also das er wirklich nur nach dem Dateinamen sucht.
Folgender Fehler kommt bei strfind:
Error using cell/strfind (line 33)
If any of the input arguments are cell arrays, the first must be
a cell array of strings and the second must be a character array.
Error in search_measurements_in_listfilest (line 44)
stl=strfind(Messungen(v),text{1});
Messungen ist das Array mit den Suchbegriffen und text das txt File als Cell Array.
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 14:54
Titel:
|
 |
hmm die fehlermeldung sagt eindeutig was du falsch machst.
Zitat: |
If any of the input arguments are cell arrays, the first must be
a cell array of strings and the second must be a character array |
du vertauscht anscheinend die eingabe werte bei strfind. ohne beispieldaten kann ich das leider nicht lösen. darum habe ich nach einem minimalbeispiel gefragt.
_________________
richtig Fragen
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 14:57
Titel:
|
 |
Wie wäre es mit STRMATCH?
Supergenerisch ist es zudem wenn man sich mit "regular expressions" vertraut macht. Es ist eine gewisse Lernkurve zu überwinden, aber wenn man es enimal verstanden hat, ist es extrem mächtig.
Andreas
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 15:39
Titel:
|
 |
Hallo
wenn du ein kleines Beispiel der Aufbau deiner Pfade Variablen posten würdest, dann könnte man dir besser helfen.
Ansonsten ein Beispiel mit Regulären Ausdrücken
|
|
|
Plunder |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 18
|
 |
|
 |
Anmeldedatum: 14.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.12.2013, 09:56
Titel:
|
 |
Dateiname sind die zu durchsuchenden txt Files.
Messungen ist das Array mit den Suchbegriffen.
|
|
|
Plunder |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 18
|
 |
|
 |
Anmeldedatum: 14.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.12.2013, 09:07
Titel: Problem gelöst und neues entstanden;)
|
 |
Hallo zusammen,
also das Problem mit strfind habe ich gelöst. Vielen Dank. War nur eine nervige Klammer..
Allerdings hat es den anschein, dass die strfind Funktion enorm Performance zieht. Also im vergleich zu strcmp.
Kann das sein?
Hier mein Code:
'Messungen' ist ein Cell Array mit den Suchbegriffen.
'Dateinamen' ist ein Cell Array mit den zu durchsuchenden txt Files
Hat jemand eine idee wie man das noch optimieren kann.
Gruß Plunder
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 09.12.2013, 12:57
Titel:
|
 |
Hallo
folgende Optimierungsschritte:
1) mit DIR gleich nach entsprechender Dateiendung suchen => spart man schon eine IF-Anweisung mit STRFIND
2) Treffer-Matrix(treffer2) vorinitialisieren, sonst wird immer temporäre Kopie der Matrix erstellt, was sehr langsam ist
3) ein anderes Format wählen für deine Treffer Matrix, also kein Cell, sondern Boolean Matrix wählen
4) REGEXP ausprobieren, dazu muss man den Aufbau deiner Variablen Messungen kennen
so ungefähr:
|
|
|
|
|
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.
|
|