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

Skript wiederholt mit vielen Ausgangsdateien ausführen

 

Solveig1506
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2018, 21:25     Titel: Skript wiederholt mit vielen Ausgangsdateien ausführen
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem und zwar habe ich weit über tausend .txt Dateien (bestehend aus einer Spalte mit unterschiedlich vielen Zeilen), die ich bearbeiten muss.
Ich habe ein funktionierendes Skript, mit dem ich einen Plot und eine Variable erstelle, die ich gerne wieder als .txt Datei bzw. als Bilddatei (Plot) speichern möchte.
Ist es möglich alle meine Eingangsdateien automatisiert einzuladen, das Skript auszuführen und die beiden benötigten Eregbnisse (Plot und Workspace-Variable) zu speichern?
Ich bin ein totaler Matlab Neuling und alles was ich gefunden habe, was ungefähr mit meinem Problem zu tun haben könnte, konnte mir leider gar nicht weiter helfen Embarassed

Vielen Dank schon mal und einen schönen Abend
Solveig
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.06.2018, 22:27     Titel:
  Antworten mit Zitat      
Hallo,

schau dir mal datastore an.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Solveig1506
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2018, 17:05     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für die schnelle Hilfe!
Leider konnte ich damit nicht so viel anfangen.
Ich habe noch eine Weile gegoogelt und bin immer wieder auf eine Möglichkeit gestoßen, die mir passend erschien. Da alle meine Dateien vom gleichen Typ sind und sich im gleichen Ordner befinden, dachte ich, ich könnte eine Liste der Dateinamen erstellen und diese dann über eine for-Schleife einlesen und bearbeiten.
Meine bisherigen Versuche sehen so aus:

Liste = dir('*.xlsx');
Files = {Liste.name};

for i=1:numel(Files)
R = fullfile('C:\Users\s\Desktop\Bachelorarbeit\Matlab\Messdaten',Files{i});
data = xlsread(R);
% Hier würden die weiteren Berechnungen folgen

end

Es scheint auch soweit zu funktionieren, allerdings habe ich am Ende nur ein Ergebnis. Also nur eine bearbeitete, geplottete und gespeicherte Datei. Ich weiß nicht, wie ich das beheben kann. Ist da schon ein Fehler drin oder liegt es daran, dass meine Ergebnisse (in dem Fall 'data', der Plot etc.) bei jedem Durchlauf wieder überschrieben werden? Und wenn ja wie kann ich das beheben?

Vielen Dank für die Hilfe und viele Grüße
Solveig
Private Nachricht senden Benutzer-Profile anzeigen
 
Solveig1506
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2018, 19:56     Titel:
  Antworten mit Zitat      
Ich hab nochmal weiter probiert und das hier zusammengebastelt..

Code:
Liste = dir('*.xlsx');
Files = {Liste.name};
f = numel(Files);

for i=1:numel(Files)
    R = fullfile('C:\Users\s\Desktop\Studienarbeit Durre\Matlab\Test',Files{i});
   data = xlsread(R);
   x = data(:,1);

    for c = 1:numel(Files)
        plot(x)
        pic = figure('name', ['Plot' num2str(c)]);
        saveas(pic, ['Plot' num2str(c)], 'png')
    end
end


Ich wollte eigentlich erreichen, dass die verschiedenen Plots unter verschiedenen Namen gespeichert werden. Allerdings habe ich nun statt 6 Plots (numel(Files) ist = 6) plötzlich 36 Plots. Zu jeder eingeladenen Datei werden 6 Plots erstellt und deswegen habe ich 6 mal den gleichen Plot gespeichert, die anderen gar nicht.
Wo genau liegt denn hier mein Fehler?

Viele Grüße
Solveig
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du hast zwei geschachtelte Schleifen und darin 6*6 = 36 Iterationen. Der Name hängt nur von c und nicht von i ab, daher werden die Plots überschrieben. Ich bin mir nicht sicher, was die Absicht des Codes ist. Mir scheint aber, du könntest die innere Schleife einfach weglassen und i statt c für die Erstellung des Dateinamens verwenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Solveig1506
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2018, 20:33     Titel:
  Antworten mit Zitat      
Hallo Harald,

da hast du vollkommen recht, einfach i zu nehmen hilft. Ich bin wirklich blutiger Anfänger was Matlab angeht, deswegen will ich wirklich nicht behaupten, dass alles was ich mir da zusammenbastel wirklich Sinn macht. Allerdings werden mir die Plots jetzt richtig angezeigt, gespeichert wird allerdings nur weißer Hintergrund. Weißt du, woran das liegen könnte?

Viele Grüße
Solveig
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.06.2018, 21:54     Titel:
  Antworten mit Zitat      
Hallo,

die Reihenfolge passt nicht. So sollte es gehen:
Code:
       pic = figure('name', ['Plot' num2str(c)]);
        plot(x)
        saveas(pic, ['Plot' num2str(c)], 'png')

Kannst du auch mit dem Debugger selbst nachvollziehen.

Grüße,
Harald
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.