Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Ereignisdiskrete Systeme

Fachkräfte:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Bestimmten Wert aus Datei lesen und Wörter löschen

 

SörenU

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2021, 16:46     Titel: Bestimmten Wert aus Datei lesen und Wörter löschen
  Antworten mit Zitat      
Hallo,

Ich habe eine txt Datei und les mir aus dieser Werte raus, in dem ich nach Keywörtern suche. Das hat die ganze Zeit funktioniert, jedcoh bei wenigen Wörter funktioniert es nicht.

1.Problem:

Code:

fid = fopen(fullfile(Pfad, dname));
key_word9 = 'Standard deviation of period';
    j9 = [];
    while ~feof(fid)
         line = fgetl(fid);
         newline1 = strtrim(line);
         newline2 = erase(newline1, "seconds");
         k = strfind(newline2, key_word9);
         if strncmpi(newline2, key_word9, 7)
              j9 = str2double(extractAfter(newline2, ":"));
             fclose(fid);
             break
          end
    end
I(lvl18,1) = j9;
 


Hier kann er mir Standard deviation of period einfahc nicht auslesen, ob wohl es bei allen anderen funktioniert.

2. Problem
Code:

fid = fopen(fullfile(Pfad, dname));
key_word10 = 'Fraction of locally unvoiced frames';
    j10 = [];
    while ~feof(fid)
         line = fgetl(fid);
         newline1 = strtrim(line);
         newline2 = erase(newline1, "%   (*)");
         k = strfind(newline2, key_word10);
         if strncmpi(newline2, key_word10, 7)
              j10 = str2double(extractAfter(newline2, ":"));
             fclose(fid);
             break
          end
    end
J(lvl18,1) = j10;
 


In der Zeile Fraction of locally unvoiced frames stehen nach der Zahl und dem % in der Klammer immer verschiedene Werte pro Datei, die ich aber nicht brauch sondern nur den Wert direkt nach Doppelpunkt wie bekomme ich die erase weg, wenn es nicht immer die gelichen 2 Zahlen sind.

Danke schonmal und Grüße

18-3.txt
 Beschreibung:
Die auszulesen Dateien sehen so aus

Download
 Dateiname:  18-3.txt
 Dateigröße:  1.28 KB
 Heruntergeladen:  12 mal


SörenU

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2021, 11:01     Titel:
  Antworten mit Zitat      
Kann es sein, dass er nur das erste Wort benutzen kann zum suchen?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.520
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.11.2021, 11:39     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Hier kann er mir Standard deviation of period einfahc nicht auslesen

Was genau meinst du damit?
Möchtest du die folgende Zahl extrahieren, oder was willst du erreichen?
Die Zeile j9 = ... wird erreicht, und j9 wird dort auf NaN gesetzt. Warum? Weil das "Hz" enthalten ist und das nicht in eine Zahl umgewandelt werden kann. Abhilfe z.B. durch:
Code:
j9 = str2double(extractBetween(newline2, ": ", " "));


Im zweiten Teil entsprechend:
Code:
j10 = str2double(extractBetween(newline2, ":", "%"));


Mir drängt sich die Vermutung auf, dass du entsprechenden Code schon für j1 bis j8 hast. Das wäre dann sehr länglich mit jeder Menge Duplizierung, was man vermeiden sollte, z.B. durch Verwendung selbst geschriebener Funktionen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
SörenU

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2021, 11:55     Titel:
  Antworten mit Zitat      
Ja es gibt j1-j8 habe versucht es in eine Schleife zu bauen bin aber leider gescheitert. Würde am liebsten jeden Wert, der nach einem Doppelpunkt angezeigt wird aus der Datei auslesen und in eine entsprechende Matrix speichern. Gibt es da einen einfacheren Weg als jede Zeile mit einem Keyword zu suchen? Beispielsweise Zeile 5 oder Zeile 7, also nach Nummern auszulesen?

Grüße und Danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.520
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.11.2021, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

Vorschlag:
Code:
data = fileread("18-3.txt");
data = strsplit(data, "\n");
pat = ": " + ((digitsPattern + "." + digitsPattern) | digitsPattern);
num = cellfun(@(data) str2double(extractAfter(extract(data, pat), ": ")), ...
    data, 'UniformOutput',false)';


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.