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

Einlesen von mehreren Dateien

 

fabimax
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.05.21
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 03.05.2021, 09:25     Titel: Einlesen von mehreren Dateien
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Projekt bei dem ich mehrere Messdaten als .txt vorliegen habe. Ich habe nun mein Programm soweit, dass ich einzelne Dateien aufrufen kann und mir mit einem Lowpassfilter der Maximal-Wert ausgegeben wird.

Nun habe ich mehrere Dateien (messdat_000.txt, messdat_001.txt ...) welche automatisch eingelesen werden sollen und mir ein Vektor erstellt wird mit den jeweiligen gefilterten Maximal-Werten.

Als Problem stellt sich für mich, dass ich aus der messdat_000.txt Datei erstmal alle ',' zu einem '.' umwandeln muss. Dabei wird eine 'messdat_temp.txt' erzeugt in der die Werte als '.' abgespeichert sind.

Hier mal der Code
Code:
tic
clear all;
close;
clc;

%% Messdaten einlesen

Data = fileread('messdat_000.txt');
Data = strrep(Data, ',', '.');
FID = fopen('messdat_temp.txt', 'w');
fwrite(FID, Data, 'char');
fclose(FID);


file = fopen('messdat_temp.txt');
textscan(file, '%*[^\n]', 20);              % Überspringen der ersten 20 Zeilen
heading = textscan(file,'%s %*s %s %*s %*s %*s %*s',inf);
fclose(file);

%% Umwandeln der Daten

time = cellfun(@str2double, heading{1});

force = cellfun(@str2double, heading{2});

%% Filtern

x = time;

y = lowpass(force,850,10000);

y_max = max(y);

%% Datenausgabe

fprintf ('Gefiltertes Maximum:           %8.5f\n', y_max);

%plot(x,y)

toc


Über jegliche Hilfe wäre ich sehr dankbar.

Im Anhang ist auch die messdat_000.txt Datei zu finden.

messdat_000.txt
 Beschreibung:

Download
 Dateiname:  messdat_000.txt
 Dateigröße:  2 MB
 Heruntergeladen:  139 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2021, 09:38     Titel:
  Antworten mit Zitat      
Hallo,

mit dir kannst du dir eine Liste über die Dateien erstellen. Dann würde ich eine for-Schleife über die Dateien erstellen.

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
 
fabimax
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.05.21
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 03.05.2021, 10:32     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antwort.

Das Auflisten der 'messdat_XXX' dateien habe ich mit dem dir Befehl hinbekommen.

Kannst du mir auf die Sprünge helfen wie du das genau meinst mit der For-Schleife?

Ich weiß nicht wie ich das programmieren soll bezogen auf das Ende der jeweiligen .txt Datei (000,001 usw.)
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Code:
list = dir("messdat*.txt");
for k = 1:list
   currentFile = list(k).name;
   % jetzt mit currentFile weiterarbeiten
end


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
 
fabimax
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.05.21
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 03.05.2021, 12:25     Titel:
  Antworten mit Zitat      
Danke dir für die Antwort,

er wirft mir bei der Schleife eine Fehlermeldung:


Operator ':' is not supported for operands of type 'struct'.

Error in main_test (line 11)
for k = 1:list

edit: Habe den Code so erweitert

Code:


jetzt funktioniert das. Nun stehe ich vor dem nächsten Problem, dem Umwandeln von ',' in '.' Wenn ich das ganze so programmiere meldet er dass er keine Datei findet die currentFile_temp heißt...
Code:
for k = 1:length(list)
   currentFile_temp = list(k).name;
   % jetzt mit currentFile weiterarbeiten

Data = fileread('currentFile_temp');
Data = strrep(Data, ',', '.');
FID = fopen('currentFile', 'w');
fwrite(FID, Data, 'char');
fclose(FID);


file = fopen('currentFile');
textscan(file, '%*[^\n]', 20);              % Überspringen der ersten 20 Zeilen
heading = textscan(file,'%s %*s %s %*s %*s %*s %*s',inf);
fclose(file);
 


Zuletzt bearbeitet von fabimax am 03.05.2021, 13:58, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2021, 13:53     Titel:
  Antworten mit Zitat      
Hallo,

sorry:
Code:


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
 
fabimax
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.05.21
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 03.05.2021, 14:06     Titel:
  Antworten mit Zitat      
Danke dir Harald,

funktioniert soweit alles. Falls noch Probleme auftreten melde ich mich.

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2021, 15:09     Titel:
  Antworten mit Zitat      
Hallo,

was ich eben noch sehe: statt %s und Umwandlung mit str2double könntest du direkt %f verwenden.

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
 
fabimax
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.05.21
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 03.05.2021, 15:24     Titel:
  Antworten mit Zitat      
Wow, danke für den Tipp.

Die Performance hat sich von ca 24 Sekunden auf nur 6 reduziert.

Schönen Feierabend 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 - 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.