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

Loop über mehrere files; dann mean

 

Bot77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2019, 16:26     Titel: Loop über mehrere files; dann mean
  Antworten mit Zitat      
Hallo Gemeinde,

ich bin noch unerfahren was Matlab angeht und hoffe hier auf eure Hilfe.

Ich möchte für mehrere Dateien aus einem Ordner das selbe Script anwenden (Daten vorsortieren) und dann aus den entsprecheneden Variablen der Dateien den Mean bilden.

Ich dachte zunächst ich könnte so vorgehen:

Code:
files = dir('*.mat');
for file = files'
    csv = load(file.name);
 


jedoch werden so anscheinend nur die Files geladen, nicht aber angesprochen?

Danke schonmal für eure Hilfe und Grüße


Harald
Forum-Meister

Forum-Meister


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

was heißt, dass die Dateien "angesprochen" werden?

Die Art der for-Schleife ist denkbar ungünstig. Eher:
Code:
files = dir('*.mat');
for k = 1:numel(files
    csv(k) = load(files(k).name);
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
 
Bot77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2019, 16:54     Titel:
  Antworten mit Zitat      
Hallo Harald, danke dir, das sieht gut aus.

Ich hatte sowas hier noch probiert:
Code:
data{1}= path
data{2}= path;

for i=1: size(data,2)
    load(data{i});

% Vorverarbeitung

%Scatterplot
end

%Scatterplot über alle data
 


und ab hier wäre es mein Ziel, dass über jede dieser "data" Variablen ein bestimmtes Script läuft. Z.B. befinden sich in jeder "data" mehrere Variablen die vorverarbeitet werden sollen um dann einen Scatterplot drüber zu erstellen.
Als nächsten Schritt sollen alle diese vorverarbeiteten "data" Variablen aus jeder einzelnen Datei gemittelt werden, um einen allgemeinen Scatterplot zu erstellen.

Ich hoffe dieses Beispiel kann es etwas besser veranschaulichen.
Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.11.2019, 17:07     Titel:
  Antworten mit Zitat      
Hallo,

ist path jeweils ein Dateiname inkl. Pfad oder was?
Und wo ist nun genau das Problem dabei und wie können wir dir dabei helfen?

Am einfachsten ist es generell, wenn du eine Funktion schreibst, die einen Datensatz verarbeitet. Dann kannst du der Reihe nach die verschiedenen Datensätze dorthin übergeben.

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
 
Bot77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2019, 17:40     Titel:
  Antworten mit Zitat      
Hallo Harald,

genau, path ist der Dateiname inkl Pfad.

Mein Problem ist, dass mir nicht ganz klar ist, wie zum Ende hin z.B. ein Mittel aus allen Dateien ziehen könnte, oder wie ich es schaffe, dass die Schleife die selbe Funktion auf alle Dateien anwendet.

In dem von mir geposteten Code oben wird leider immer nur die erste Datei eingelesen.

Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.11.2019, 17:51     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ein Mittel aus allen Dateien ziehen

Das ist nicht wirklich sinnvoll. Du kannst höchstens ein Mittel über die in den Dateien enthaltenen Variablen berechnen. Damit das klappt, musst du die Variablen auch zwischenspeichern, siehe dein und mein erster Beitrag. Warum du das Rückgabeargument von load danach weglässt, erschließt sich mir nicht.

Zitat:
In dem von mir geposteten Code oben wird leider immer nur die erste Datei eingelesen.

Da kann es an sich nur Probleme mit falschen Pfaden oder so geben. Bekommst du denn eine Fehlermeldung? Prinzipiell liest der Code alle angegebenen Dateien ein.

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
 
Bot77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2019, 19:33     Titel:
  Antworten mit Zitat      
Hi Harald,

ich bekomme keine Fehlermeldung, der Code läuft einfach nur für eine Datei durch.

Code:
files = dir('*.mat');
for k = 1:numel(files)
    csv(k) = load(files(k).data);
   
    time=data.RT
    time(time(:,2) == 2, :) = [];
end
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.11.2019, 20:59     Titel:
  Antworten mit Zitat      
Hallo,

sorry, aber was machst du da??
Wenn du den Output von load in csv schreibst, musst du ihn schon auch von dort verwenden. Wenn du da mit data weiter arbeitest und das keine Fehlermeldung gibt, dann ist das eine Variable, die von früher noch im Workspace liegt.

Zitat:
ich bekomme keine Fehlermeldung, der Code läuft einfach nur für eine Datei durch.

Wenn du keine Fehlermeldung bekommst, dann läuft der Code für alle Dateien durch.

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
.





 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.