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

Automatisches Bearbeiten von ähnlich genannten Matrizen

 

wasserstudent
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2014, 08:12     Titel: Automatisches Bearbeiten von ähnlich genannten Matrizen
  Antworten mit Zitat      
Long time reader, first time poster.

Moinmoin, ich habe folgendes Problem: Mein Skript gibt mir mehrere .dat-Datein aus, welche folgendes Schema haben: "AAAA0001zero" bis "AAAA0060zero". Ich habe es geschafft, diese schnell in meinen aktuellen Workspace mittels

Code:
files=dir('*.dat');
for i=1:numel(files)
    eval(['load ' files(i).name ' -ascii']);
end


einladen zu können. Doch nun weiß ich nicht mehr weiter. Ich möchte gerne, dass all diese Matrizen (in dem Falle 2x9 double) in eine geschrieben werden, bzw. immer eine Zeile einer Matrix in eine weitere (größere) geschrieben wird. Ich habe es schon mit einer For-Schleife versucht, doch bin jedes Mal gescheitert.

Könnte mir jemand einen Tipp oder einen Hinweis geben, wie man elegant automatisch ähnlich benannte Daten (welche sich nur in einer fortlaufen Zahl unterscheiden) bearbeiten kann?

Vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 02.06.2014, 08:30     Titel:
  Antworten mit Zitat      
Hallo,

das ist ein Problem, das hier im Forum schon öfters diskutiert wurde. Man sollte keine Indizes in Variablennamen verstecken. Das ist aber bei dir der Fall, da ein simples load() eine Variable mit dem Dateinamen ohne Endung erstellt.
Besser: die Daten beispielsweise in einer Cell ablegen und später weiterverarbeiten.
Eval ist eine Methode, um mit Indices im Variablennamen zu hantieren, ist aber eigentlich immer der schlechtere Weg, zumal du eval hier gar nicht benötigst.

Vorschlag:
Code:
files=dir('*.dat');
data = cell(size(files));
for i=1:numel(files)
    data{i} = load(files(i).name);
end

Viele Grüße,
Nras

Edit: in der Schleife index nicht benutzt, nun: files(i) statt files(1).

Zuletzt bearbeitet von Nras am 02.06.2014, 09:47, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
wasserstudent
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2014, 09:32     Titel:
  Antworten mit Zitat      
Vielen Dank, du hast mir sehr geholfen Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 02.06.2014, 09:48     Titel:
  Antworten mit Zitat      
Gern,

in der Schleife war noch ein Fehler, da stand files(1) statt files(i). Das hast du sicher schon selbst bemerkt, aber ich habe das nun editiert Wink.
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.