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

text in matlab generieren - zeile für zeile

 

koko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2009, 22:01     Titel: text in matlab generieren - zeile für zeile
  Antworten mit Zitat      
hallo,

ich möchte eine text datei in matlab einlesen und er soll nur die "vollen" zeilen einlesen, d.h. bei ende der datei mir keine daten mehr anzeigen (line dann -1).
ich habe bisher das in meinem m-file:

Code:
[file, path] = uigetfile ('*', 'FP_Open data file: ');
inFile = fullfile(path, file);
fid = fopen (inFile, 'r');
for i=1:50
    line=fgetl(fid)
    if i==-1
    else i=i
    end
end


nun hört er aber nicht beim ende d.h. -1 auf zu zählen, sondern gibt mir noch alle 50 zeilen an (die ersten 5 davon sind in der text datei aber nur beschrieben).

ich muss das problem mit der if-funktion lösen.
geht das?
oder hilft mir da nur die while-funktion?

ich hoffe, ihr könnt mir helfen!

Edit by Bijick: Code-Umgebung ergänzt. Bitte in Zukunft selbst dran denken (Code-Button mittig über dem Eingabefeld)! Danke Smile


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2009, 23:23     Titel: Re: text in matlab generieren - zeile für zeile
  Antworten mit Zitat      
koko hat Folgendes geschrieben:

Code:

    else i=i
 



Ähhm... ;)

Zum eigentlichen Thema: Du zählst mit i von 1:50 (for i=1:50). In dieser Zählschleife fragst Du, ob er beim Zählen von i=1...50 auf eine -1 gestoßen ist. Wenn ihm das tatsächlich passiert ist, dann soll er nichts unternehmen. Wenn ihm das nicht passiert ist, er also keine -1 gefunden hat, soll er eine relativ sinnfreie Operation durchführen (siehe oben).
Ich vermute einfach mal, dass das nicht ganz dem entspricht, was Du willst ;)

Zitat:
oder hilft mir da nur die while-funktion?

Cleverer ist das auf jeden Fall.
Code:

line = '';
while line != -1
   line = fgetl(fid)
end
 

sieht auch irgendwie kompakter aus.

Wenn Du es unbedingt mit der for-Schleife machen willst, dürfte dir break weiterhelfen:
Code:

for iCount = 1:50
    line = fgetl(fid)
    if line == -1 % Dateiende?
        break; % -> Abbruch
    end
end
 
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.