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 Array mit string vergleichen

 

LattiLord
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2012, 20:24     Titel: Cell Array mit string vergleichen
  Antworten mit Zitat      
Hallo,
ich habe vor kurzer Zeit erst mit MatLab angefangen und habe ein Problem. Bin auch neu hier und hoffe, dass vielleicht jemand Zeit und Ahnung hat und mir helfen kann.

Ich will aus einer .txt Datei, die mit beliebigem Inhalt gefüllt ist, den Inhalt in eine Matrix/Celle auslesen. Dabei soll nach jedem Leerzeichen in der .txt-Datei eine neue Spalte in der Matrix beginnen.

Folgender Code:
Code:

fid=fopen('test.txt','r');

A=cell(2000,100);
for zeile=1:1:5000
    for spalte=1:1:100
        B = fread(fid,1);
        if B==10
            break
        elseif B==13
            continue
        else
            A{zeile,spalte}=B;
            while B~=32 && B~=10
                B=fread(fid,1);
                A{zeile,spalte}=setstr([A{zeile,spalte},B]);
            end
        end
        if B==10
            break;
        end
    end
end



Er liest das schonmal alles in die Zelle A ein. Mein Problem ist nun, dass ich danach vergleichen möchte, z.b. wenn in A{4,1} der Inhalt '$EndNotes steht, möchte ich dass irgendwie abfragen oder rausfinden können.
Mit == funktioniert es nicht, habe ich schon im Internet gefunden, aber auch strcmp klappt nicht...

Hat jemand eine Idee?
halt sowas wie if A{4,1} == '$EndNotes' - nur, dass ich auch eine 1 bekomme...


Schon mal vielen Dank im voraus, falls sich einer die Mühe macht

Smile
LG
Lars


edit: ich sehe gerade, dass A{4,1} m it dem Inhalt '$Notes' die Größe von
a 1x8 16 char hat, wohingegen

b='$Nodes' , also manuell eingegeben, die Größe
b 1x6 12 char hat.

Vielleicht kann damit wer was anfangen.
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: 23.08.2012, 23:56     Titel: Re: Cell Array mit string vergleichen
  Antworten mit Zitat      
Hallo LattiLord,

STRCMP vergleich Strings und auch Strings mit Cell Strings. Siehe "doc strcmp".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LattiLord
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2012, 08:28     Titel:
  Antworten mit Zitat      
Hey,
erst einmal danke für dein Antwort Smile

Das hatte ich allerdings schon vorher mit
TF = strcmp('$EndMeshFormat',A)
ausprobiert und bin zu keinem Ergebnis gekommen.

Hat noch jemand eine Idee? Hab ich die Daten vllt. falsch eingelesen?

LG
Lars
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2012, 09:10     Titel:
  Antworten mit Zitat      
Hi,

Was heißt denn kein Ergebnis bekommen?

Wenn du
Code:

TF = strcmp('$EndMeshFormat',A)
 

machst, und A ein CellArray mit Strings ist,
dann ist TF ein logical Array, 1 wenn der gesuchte String mit dem im CellArray übereinstimmt, ansonsten 0.
 
LattiLord
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2012, 09:20     Titel:
  Antworten mit Zitat      
Oh sorry, das war ungenau ausgedrückt... Kein Ergebnis heißt,d ass das Array TF nur mit Nullen gefüllt war und mir an keiner Stelle ein true rausgegeben hat...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2012, 10:32     Titel:
  Antworten mit Zitat      
Naja, dann gibt es diesen String nicht in dem Array.
Hast du eventuell noch andere Steuerungszeichen mit eingelesen?

Schau dir vielleicht mal textscan an, damit sollte man die Datei auch ganz gut einlesen können
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2012, 17:05     Titel:
  Antworten mit Zitat      
Hallo Lars,
Wenn Du Dir Deine while-Schleife anschaust,
Code:
while B~=32 && B~=10
B=fread(fid,1);
A{zeile,spalte}=setstr([A{zeile,spalte},B]);
end
 

wird zum einen B=13 (Zeilenumbruch unter Windows: 13,10 und nicht 10,13)
mit in den String aufgenommen, zum anderen wird auch noch B erst nach
dem Anhängen auf B=10 überprüft, so dass die zwei zusätzlichen Zeichen
['$EndNotes',13,10] geklärt wären.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2012, 17:44     Titel:
  Antworten mit Zitat      
Vielen Herzlichen Dank Smile klappt jetzt Smile
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.