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

Mehrere Dateien einlesen und bearbeiten

 

PH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2011, 00:27     Titel: Mehrere Dateien einlesen und bearbeiten
  Antworten mit Zitat      
Hi,

folgendes Problem: Ich muss mehrere Dateien mit Messdaten einlesen und diese dann bearbeiten.
Dies habe ich bisher mit einer Schleife und strcat bzw. num2str gelöst, wie hier gezeigt:

for i=1:2

load (strcat('Relaxationsversuch_kurz',num2str(i),'.TRA'));

end

Die Dateien sind dann als Double eingelesen.
Ich muss nun aber die einzelnen Spalten jeder Datei als Variable festsetzen und bearbeiten, also 1.Spalte der ersten Datei = S1, 1.Spalte der zweiten Datei = S2 usw.
Dabei komme ich aber nicht weiter. Vielleicht kann mir hier jemand helfen.


Mfg Paul[/b][/i]


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.01.2011, 00:40     Titel: Re: Mehrere Dateien einlesen und bearbeiten
  Antworten mit Zitat      
Hallo PH,

Oder:
Code:
for i=1:2
    load (sprintf('Relaxationsversuch_kurz%d.TRA', i);
end


Zitat:
Ich muss nun aber die einzelnen Spalten jeder Datei als Variable festsetzen und bearbeiten, also 1.Spalte der ersten Datei = S1, 1.Spalte der zweiten Datei = S2 usw.

Davon würde ich ausdrücklich abraten. Wenn Du bereits eine gute Datenstrukture hast, nämlich eine Matrix, wäre es eine unnötige Verkomplizierung, daraus umständlich einen Haufen separater Vektoren zu basteln, die dann auch noch einen Index im Namen tragen, wo er nur mit verwirrenden Tricks wieder verwendet werden kann.
Siehe hierzu:
http://matlab.wikia.com/wiki/FAQ#Ho......2C....2CA10_in_a_loop.3F

Ich würde also wärmstens empfehlen, nachdem ich hier und in anderen Foren viele dutzend Fragen darüber gelesen habe, wie man denn nun später automatisch auf A1, A2, ... zugreifen kann:
Code:

  Data = load (sprintf('Relaxationsversuch_kurz%d.TRA', i);
  % Und dann:
  S = Data.S;
  disp(S(:, 1));
  disp(S(:, 2));
 

Das ist effizienter in der Laufzeit, Speichernutzung, und vor allem Programmier- und Debugzeit!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
PH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2011, 00:52     Titel:
  Antworten mit Zitat      
Hi Jan,

danke erstmal für die schnelle Antwort.
Verstehe ich das richtig, dass dann aus allen Dateien eine Matrix erstellt wird und ich dann auf die einzelnen Spalten zugreifen soll?
Problem könnte dann aber sein, dass die Messreihen unterschiedlich lang sind, d.h. die Spalten wären dann unterschiedlich lang...


Gruß,
Paul
 
PH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2011, 01:28     Titel:
  Antworten mit Zitat      
...Wäre dann die Nutzung von cell arrays besser geeignet?
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.01.2011, 01:42     Titel:
  Antworten mit Zitat      
Hallo PH,

Zitat:
Verstehe ich das richtig, dass dann aus allen Dateien eine Matrix erstellt wird und ich dann auf die einzelnen Spalten zugreifen soll?

Der Beispiel-Code, den ich gepostet hatte, liest erstmal immer nur ein File ein. Ich habe lediglich geraten, keine individuellen Namen für die einzelnen Spalten zu vergeben, weil man sich damit im Allgemeinen nur unnützen Ärger einhandelt.
Also wenn es sich um drei Spalten handelt, die man dann als "Time", "Position" und "Velocity" bezeichnet, ist das wohl noch übersichtlich genug. Aber 20 Spalten in "S1", "S2", ... umzuwandeln, erhöht die Komplexität bis zur Nicht-Debugbarkeit.

Zitat:
...Wäre dann die Nutzung von cell arrays besser geeignet?

Genau.

Wenn Du mehr Details von Deinem Programm zeigen möchtest, wären genauere Antworten möglich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
HPA69
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 08.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.01.2011, 10:35     Titel:
  Antworten mit Zitat      
Moin,
ich hatte neulich das gleiche Problem, nur noch etwas komplizierter.
Am einfachsten ist für das spätere Datenhandling wirklich, wenn Du Dir einen struct anlegst den zum Beispiel T nennst und in T{1} dann deine jeweiligen Messwerte ablegst. Dann sehe die Messwerte für Messung 1 so aus. T{1}.time , T{1}.Position und T{1}.Velocity
Private Nachricht senden Benutzer-Profile anzeigen
 
PH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2011, 13:54     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für deine Hilfe - habe das Problem jetzt wie gesagt mit cell arrays gelöst. Musste erst herausfinden, dass man die einzelnen Spalten der Zellen auch ansprechen kann, danach war es nur noch Schreibarbeit.

Gruß,
Paul
 
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.