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

Automatisch Daten importieren: Schleife über Dateiendung

 

Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2014, 16:18     Titel: Automatisch Daten importieren: Schleife über Dateiendung
  Antworten mit Zitat      
Hallo zusammen,
als absoluter Matlab-Newbie fände ich es super, wenn ihr eure Antworten möglichst simpel formuliert. Vorab vielen, vielen Dank dafür! Wink

Thematik: Ich will N Dateien des Typs csv mit der Dateiendung 0001 bis z.B. 0200, wobei in diesem Fall N=200, über eine Schleife einlesen. Jede Datei ist gleich aufgebaut: Spannung über Zeit, auch die Einheiten sind gleich. Mit jeder Datei wird das gleiche gemacht: Peaks gezählt und Anzahl in ein Array geschrieben.

Code:

for i=1:N
data(i)=importdata(['Name_Teil1' num2str(i) '.cvg']);
end
 



Mein Problem: eine Schleife zu konstruieren, die für Zahlen N>9 gilt und die die Datein der Reihe nach importiert und bearbeitet, die Anzahl der Nullen im Dateinamen muss ja variieren. Question

Vielen Dank im Voraus für eure Bemühung!
Liebe Grüße,
Tatat


Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2014, 15:17     Titel: Variabler Dateiname
  Antworten mit Zitat      
Okay ich habe es selbst mal so probiert:
Code:
NDatei = 200; %Anzahl der Dateien
ToT = 0.03; %Totzeit Detektor
Ergebnis=zeros(1,NDatei) %Nullarray
j = 1; %Zähler für Datei
for j=1:NDatei
    str=num2str(j);
    string=str(3:6);
   [b] data=fopen('20140512-0013_' string '.csv');[/b]
    [pks,len]=findpeaks(data,'MINPEAKHEIGHT';2.0);
    int i=1; %Zähler Schleife
    for len(i)-len(i-1)>ToT
        Ergebnis(j)=Ergebnis(j)+1;
        i=i+1;
    end
    j=j+1;
end


Jetzt habe ich allerdings noch immer das Problem, dass er den Dateinamen in der Form nicht akzeptiert. Ideen?
Ich würde mich wirklich sehr über eine Antwort freuen, da ich als Newbie die Hilfe wirklich gebrauchen kann. Embarassed
Liebe Grüße,
Tanja
 
SkyRazor
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 07.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2014, 16:46     Titel: Re: Variabler Dateiname
  Antworten mit Zitat      
Tatat hat Folgendes geschrieben:
Okay ich habe es selbst mal so probiert:
Code:
NDatei = 200; %Anzahl der Dateien
ToT = 0.03; %Totzeit Detektor
Ergebnis=zeros(1,NDatei) %Nullarray
j = 1; %Zähler für Datei
for j=1:NDatei
    str=num2str(j);
    string=str(3:6);
   [b] data=fopen('20140512-0013_' string '.csv');[/b]
    [pks,len]=findpeaks(data,'MINPEAKHEIGHT';2.0);
    int i=1; %Zähler Schleife
    for len(i)-len(i-1)>ToT
        Ergebnis(j)=Ergebnis(j)+1;
        i=i+1;
    end
    j=j+1;
end


Jetzt habe ich allerdings noch immer das Problem, dass er den Dateinamen in der Form nicht akzeptiert. Ideen?
Ich würde mich wirklich sehr über eine Antwort freuen, da ich als Newbie die Hilfe wirklich gebrauchen kann. Embarassed
Liebe Grüße,
Tanja


hallo, Tanja,

ich würde einige code wie folgend schreiben(schon getestet)

Code:
for j=1:NDatei
    data=importdata(sprintf('20140512-0013_%04d.csv', j),',');

was du noch darauf achten musst ist das option im importdata, ich habe einfach ',' geschrieben, das bedeutet comma-separated, normalerweise ist es so bei csv files, wenn es nicht so ist, musst du das selbst zum z.b. ';' oder ' ' ändern.
Good luck! Smile

Grüße,Ming
Private Nachricht senden Benutzer-Profile anzeigen
 
Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2014, 14:48     Titel: Leider Fehler
  Antworten mit Zitat      
Vielen Dank für deine Antwort!
Leider bringt er bei mir eine Fehlermeldung:
Zitat:
Error in A20140516_Programm_ohne_String (line 6)
data=importdata(sprintf('20140512-0013_%04d.csv', k),',');

Code:
NDatei = 50; %Anzahl der Wellenformen, in Picoscope festgelegt unter Werkzeuge-->Voreinstellungen-->Allgemein
ToT = 0.030; %Totzeit Detektor
Ergebnis=zeros(1,NDatei);%Nullarray erzeugt, die Peaks zählen pro Datei
k = 1; %Zähler für Datei
for k=1:NDatei
    data=importdata(sprintf('20140512-0013_%04d.csv', k),',');
    [pks,len]=findpeaks(KanalA,'MINPEAKHEIGHT',2.0);
    k=k+1;
end

Hast du eine Idee, was ich falsch gemacht habe?
Liebe Grüße,
Tanja
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.05.2014, 15:07     Titel:
  Antworten mit Zitat      
ist das die vollständige fehlermeldung?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2014, 15:38     Titel: Fehlermeldung
  Antworten mit Zitat      
Ja, das ist die vollständige Fehlermeldung.
 
Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2014, 15:40     Titel: bzw.
  Antworten mit Zitat      
bzw.
Zitat:
Error using importdata (line 137)
Unable to open file.
Error in A20140516_Programm_ohne_String (line 6)
data=importdata(sprintf('20140512-0013_%04d.csv', k),',');
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.05.2014, 16:03     Titel:
  Antworten mit Zitat      
bist du mal mit dem debugger reingegangen und hast geguckt was an der stelle passiert? ist die datei vorhanden? ist sie im selben ordner etc?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.05.2014, 16:05     Titel:
  Antworten mit Zitat      
die zeile
Code:
k = 1; %Zähler für Datei

und
Code:
kannst du dir übrigens spaaren.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2014, 17:43     Titel: Re: Debugger
  Antworten mit Zitat      
Ja habe ich, der Fehler taucht bei der Zeile
Code:
data=csvread(sprintf('20140512-0013_%04d.csv', k),',');

auf. Ansonsten passiert nichts.
Weitere Infos: Sowohl das Programm als auch die aufzurufenden Dateien sind in einem Unterordner-und zwar demselben- von dem Matlab-Ordner gespeichert.
Bei Find Files ist eben dieser Ordner angegeben.
Liebe Grüße und 1000 Dank für die Bemühung,
Tanja
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.05.2014, 18:09     Titel:
  Antworten mit Zitat      
was meinst du mit unterordner? ist das der momentan aktive order? sonst musst du wohl mal ein lauffähiges beispiel zur verfügung stellen das den fehler reproduziert.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2014, 18:15     Titel: Unterordner
  Antworten mit Zitat      
Ja, es ist der momentan aktive.
 
Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2014, 18:40     Titel: Speicherort ist nicht das Problem
  Antworten mit Zitat      
Ich habe anhand von ein paar Miniprogrammen ein Paar Fehler ausschließen könnenn, unter Anderem, dass der Speicherort nicht das Problem ist. Versuche ich nur eine Datei zu importieren, klappt es. Der Fehler scheint bei der Schleife übr k zu liegen. Ideen?
Nochmal vielen Dank,
Tanja
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.05.2014, 18:45     Titel:
  Antworten mit Zitat      
wie gesagt ohne lauffähiges beispiel das den fehler reproduziert ist das recht schwer zu sagen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Tatat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2014, 19:03     Titel: Lauffähiges Beispiel
  Antworten mit Zitat      
Leider kann ich keine csv-Dateien hochladen, also habe ich alles für txt-Dateien umgeschrieben.
Bitte Dateipfad source ändern!
Ist das Minimalbeispiel/lauffähige Beispiel i.O.?
LG,
Tanja

A20140519_Beispiel_Forum.m
 Beschreibung:

Download
 Dateiname:  A20140519_Beispiel_Forum.m
 Dateigröße:  260 Bytes
 Heruntergeladen:  307 mal
20140512-0013_003.txt
 Beschreibung:

Download
 Dateiname:  20140512-0013_003.txt
 Dateigröße:  12 Bytes
 Heruntergeladen:  294 mal
20140512-0013_002.txt
 Beschreibung:

Download
 Dateiname:  20140512-0013_002.txt
 Dateigröße:  12 Bytes
 Heruntergeladen:  312 mal
20140512-0013_001.txt
 Beschreibung:

Download
 Dateiname:  20140512-0013_001.txt
 Dateigröße:  10 Bytes
 Heruntergeladen:  358 mal
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.