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

fopen - ASCII File nach String durchsuchen und Wert holen

 

morisq
Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 13.02.2012, 14:00     Titel: fopen - ASCII File nach String durchsuchen und Wert holen
  Antworten mit Zitat      
Hallo Zusammen,

ich möchte mit fopen und fgets eine ASCII Datei nach einem String durchsuchen und die Zahl welche nach dem String steht in einer Variable abspeichern. Leider konnte ich trotz suchen hier im Forum nichts finden. Gibt es hierfür eine Funktion?

Danke
Private Nachricht senden Benutzer-Profile anzeigen


morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 13.02.2012, 14:32     Titel:
  Antworten mit Zitat      
Das Problem hat sich nun ein wenig anders entwickelt. Ich möchte aus dem ASCII File eine Zeile auslesen mti dem Aussehen:
Code:
String12 String2 Wert1

Und am Ende aus der eingelesenen Zeile den Wert1 extrahieren und einer Variable im Workspace zuweisen.
Hat Jemand heir erfahrung mit solche einem Problem?
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 13.02.2012, 16:26     Titel:
  Antworten mit Zitat      
Ok das mit dem durchsuchen nach einem String hat nun funktioniert. Jetzt knabbere ich an einer Lösung für folgendes Problem. Ind er Zeile mit dem gefundenen String wird eine Zahl enthalten sein. Die möchte ich in einer Variable speichern.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 13.02.2012, 17:06     Titel:
  Antworten mit Zitat      
Wie hast du es bisher gelöst?
FGETS/TEXTSCAN?
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 14.02.2012, 09:09     Titel:
  Antworten mit Zitat      
Code:
fid = fopen(filename);
tline = fgets(fid);
value = ischar(tline);
if ident == 1
   while value == 1
        tline = fgets(fid);
        disp(tline);  
        s2 = isempty(strfind(tline,'stringname'));
        while s2 == 1
            tline = fgets(fid);
            disp(tline);
            s2 = isempty(strfind(tline,'stringname'));
            value = ischar(tline);
        end
        for s2 = 0
            v2 = sscanf(tline,'%s %s %lf');
            value = -1;
        end
       
   end
fclose(fid);
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 14.02.2012, 10:08     Titel:
  Antworten mit Zitat      
zugehörigen Wert auslesen:

Code:
v2 = sscanf(tline,'%s %s %lf');
            v2_size = size(v2);
            Length = v2(v2_size(1,1),1);
            value = -1;
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 14.02.2012, 14:24     Titel:
  Antworten mit Zitat      
also das Problem ist nun gelöst, wurde ziemlich viel hirnschmalz verbraten aber es geht, dank anderer Forenbeiträge und der Matlab Hilfe. Danke trotzdem Smile
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: 14.02.2012, 18:55     Titel:
  Antworten mit Zitat      
Hallo morisq,

Der gepostete Code enthält ein paar Bugs:
Code:
tline = fgets(fid);
value = ischar(tline);
if ident == 1   % ?? "ident" ist nicht definiert
   while value == 1  % Besser: "while value" und "value" ist TRUE oder FALSE
        tline = fgets(fid);
        disp(tline);  
        s2 = isempty(strfind(tline,'stringname'));
        while s2 == 1  % Besser: "while s2" ohne "== 1"
            tline = fgets(fid);
            disp(tline);
            s2 = isempty(strfind(tline,'stringname'));
            value = ischar(tline);
        end
        for s2 = 0  % ?? Wahrscheinlich "if s2"
            v2 = sscanf(tline,'%s %s %lf');
            value = -1;  % Besser: "value = false"
        end
   end
fclose(fid);

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

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 15.02.2012, 09:42     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Tipps, ich habe ja auch nur Auszüge gepostet, die Routine an sich ist wesentlich umfangreicher, die kann ich aber nicht posten.

Mfg Morisq
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.