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

Vektoren zusammenfügen aus verschiedenen Dateien

 

DasBoot

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2014, 13:01     Titel: Vektoren zusammenfügen aus verschiedenen Dateien
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 14.02.2014, 14:03     Titel:
  Antworten mit Zitat      
Wieviele m. Files sind das denn?
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2014, 14:27     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 14.02.2014, 18:41     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 15.02.2014, 12:41     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 15.02.2014, 14:49     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 15.02.2014, 18:51     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.02.2014, 18:55     Titel:
  Antworten mit Zitat      
Hallo,

hier ein möglicher Ansatz:
Code:
filelist=dir('*.mat');
numfiles=length(filelist);

for ii=1:numfiles

Ages(1,ii)=load(filelist(ii).name,'A');
end

Dazu ist es auch nicht notwendig, dass die Dateien durchnumeriert sind - es werden alle .mat-Dateien verwendet.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2014, 19:57     Titel:
  Antworten mit Zitat      
Danke!!! Hast mir sehr geholfen!
 
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 - 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.