|
|
Vektoren zusammenfügen aus verschiedenen Dateien |
|
DasBoot |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.02.2014, 13:01
Titel: Vektoren zusammenfügen aus verschiedenen Dateien
|
 |
Moin,
ich bin leider noch blutiger Anfänger und habe demzufolge eine relative einfache Frage:
Ich hab in einem Ordner mehrere Matlabfiles, die alle nach dem selben Schema aufgebaut sind bzw. sie besitzen alle die gleichen Variablen
(z.B. A,B,C usw.: Die Variablen bestehen alle aus einem Vektor)
Ich würde nun gerne aus den jeweils gleichen Variablen der einzelnen Dateien eine neue Variable erstellen. Also einen großen Vektor, welche die einzelnen Vektoren der jeweils gleichen Variablen aneinander hängt (Also z.B Ages: alle As aus den einzelnen Dateien)
Würde mich freuen, wenn mir jemand hier Hilfe geben könnte!
|
|
|
|
|
Heik4 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.02.2014, 14:03
Titel:
|
 |
Wieviele m. Files sind das denn?
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.02.2014, 14:27
Titel:
|
 |
Das sind um die 20. Das Problem ist, dass ich das nicht nur einmal machen muss. Also das irgendwie per Hand zu machen wäre unmöglich
Wären die Variablen in einem Ordner wäre der Befehl zum aneinanderhängen ja:
Ages=vertcat(A1,A2)
Ages=Ages(:)'
Nun habe ich versucht die einzelnen A Variablen aus den verschiedenen Ordern in den Workspace zu laden mit:
B=load('Dateipfad','A')
Reinladen funktioniert, aber er erstellt nun aus der A-Variable (aus einem anderen Ordner kommend) eine 1x1 struct (B) anstatt double wodurch vertcat nicht mehr funktioniert :/
Komme also schon hier nicht weiter. Wäre dieser Schritt gelöst, würde ich versuchen über eine Schleife die einzelnen Ordner abzuarbeiten.
|
|
|
DasBoot |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.02.2014, 18:41
Titel:
|
 |
Bin nun meiner Meinung nach ein bisschen weiter:
d=dir;
d=size(d)-2;
d=d(1,1); %Anzahl der Dateien im Ordner
Ages={[]}; %Cell erstellen
for i=1:d
Ages{1:i}=load('Datei(i)','A');
end;
Die Schleife müsste doch nun die Cell von vorne auffüllen. Das einzige Problem was ich nun habe ist die Stelle mit dem Dateinamen. Wären die Dateien geordnet nach:
Datei1
Datei2
Datei3
wäre es ja kein Problem, da Datei 1 auf die erste Stelle der Cell gelangt. Mein Problem ist aber, dass meine Dateibezeichnungen keine Nummerierung haben. Wie bekomme ich nun die Dateien nacheinander in die Cell rein? Kann man nicht irgendwo Informationen abrufen, an welcher Stelle die Datei in der Liste steht?
|
|
|
DasBoot |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2014, 12:41
Titel:
|
 |
Komme leider noch keinen Schritt weiter :/
Nochmal erster Problemschritt zusammengefasst:
Ist es möglich alle Dateien aus dem Ordner hintereinander anzusteuern? Dabei sind die Dateinamen leider nicht durchnummeriert.
Bsp:
Current Folder:
Auto
Autox
Autob
Autsd
Autet
Diese Dateien haben alle eine identische Variablenstruktur (z.B, A, B, C (Jede Variable ist ein Vektor)) Wie bereits beschrieben, würde ich gerne
alle A Variablen aus den Ordnern zu einer neuen Variable zusammenfassen. Das heisst die ganzen A-Vektoren hintereinander hängen zu einem Ages. Ist das irgendwie möglich?
Ich suche schon Stunden aber finde noch nicht einmal einen Ansatz über eine Schleife die verschiedenen Dateinamen anzusteuern.
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2014, 14:49
Titel:
|
 |
Problem mit den nicht nummerierten Dateinamen habe ich gelöst.
Also nun:
Current Folder:
datei1
datei2
datei3
usw.
Jede Datei hat Variablen A, B, C (Vektoren).
Frage bleibt gleich:
Wie kann ich mit einer Schleife alle A aus den Dateien zu einem neuen Vektor Ages zusammenfügen/aneinanderhängen
for i=1:ndateien
Ages{1:i}=load('Datei(i), 'A')
end
Klar ist dies fehlerhaft, aber vom Prinzip her möglich? Wie könnte man die Schleife schreiben, dass es funktioniert?
|
|
|
DasBoot |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2014, 18:51
Titel:
|
 |
Keiner eine Ahnung?
Bin mittlerweile so weit:
d=dir('*.mat');
d=length(d);
for ii=1:d
Ages(1,ii)=load('datei1.mat','A');
end
Jetzt erstellt er Ages und lädt dort d-mal (Anzahl Dateien) die Variable A des ersten Ordners rein.
Ich muss also nur noch hinbekommen, dass er mit jedem Schleifenumlauf eine Datei weiter springt.
also irgendwie in der Form:
load('Datei (ii).mat','A');
Wie lautet hier der richtige Befehl?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.02.2014, 18:55
Titel:
|
 |
Hallo,
hier ein möglicher Ansatz:
Dazu ist es auch nicht notwendig, dass die Dateien durchnumeriert sind - es werden alle .mat-Dateien verwendet.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2014, 19:57
Titel:
|
 |
Danke!!! Hast mir sehr geholfen!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|