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

.mat Datei in Matrix Speichern?

 

Romaxxx
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2013, 11:52     Titel: .mat Datei in Matrix Speichern?
  Antworten mit Zitat      
Hallo Community,
ich habe mehrere .mat Dateien, welche für verschiedene Personen und Kofigurationen stehen, in einem gemeinsamen Verzeichnis abgelegt.

Zum Beispiel im Verzeichnis /results:


RF_NK_13.5.mat
RF_NK_12.9.mat
RF_NK_11.6.mat
RF_AS_13.5.mat
RF_AS_12.9.mat
RF_AS_11.6.mat
IM_NK_13.5.mat
IM_NK_12.9.mat
IM_NK_11.6.mat
IM_AS_13.5.mat
IM_AS_12.9.mat
IM_AS_11.6.mat

In den .mat Dateien sind ca. 50 Variablen gespeichert.
Ich möchte nun die .mat Dateien gleicher Endungen ( Personenkürzel_NK_13.5.mat) in eine Matrixspalte oder -zeile schreiben, sie sozusagen nach Personen spalten- oder zeilenweise sortieren.
Hierbei würde eine Matrix für eine Kofiguration mehrere Personen stehen. Kann mir hierbei jemand helfen?
Vielen Dank.

Romaxxx
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.07.2013, 11:54     Titel:
  Antworten mit Zitat      
was hast du denn versucht? was hat nicht so geklappt wie du wolltest? welche fehler sind aufgetreten?
grüße winkow
Private Nachricht senden Benutzer-Profile anzeigen
 
Romaxxx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2013, 12:18     Titel:
  Antworten mit Zitat      
Lade ich eine .mat Datei in den Workspace, will es mir nicht gelingen, die gesamten Variablen im Workspace in eine Spalte oder Zeile einer Matrix zu übertragen, um so nach Personen sortiert weitere Spalten oder Zeilen in Form von Datenvariablen aus weiteren .mat Dateien anzufügen. Der Workspace einer Datei ist als Anhang beigefügt.
Gruß Romaxxx

Unbenannt.jpg
 Beschreibung:

Download
 Dateiname:  Unbenannt.jpg
 Dateigröße:  134.02 KB
 Heruntergeladen:  578 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.07.2013, 12:39     Titel:
  Antworten mit Zitat      
ok du hast also versucht mittels eines screenshots die daten zusammen zu fassen....
ok spass bei seite. was hast du bis jetzt versucht? den sinn alle daten aus dem workspace in eine variable zu schreiben erschliest sich mir nicht ganz aber egal.
Zitat:
um so nach Personen sortiert weitere Spalten oder Zeilen in Form von Datenvariablen aus weiteren .mat Dateien anzufügen.

versteh ich nicht.
vieleicht liest du nochmal den guide zum fragen stellen aus meiner signatur. deiner fragen sind zu schwammig gestellt und ohne code beispiele was du bis jetzt versucht hast und was nicht geklappt hat. da ist es sehr schwer zu helfen. falls du eine komplette lösung der aufgabe willst solltest du dich vieleicht an das unterforum programmieraufträge wenden obwohl ihc nicht glaube das das nötig ist. du musst blos dein problem besser beschreieben.
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Romaxxx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2013, 12:59     Titel:
  Antworten mit Zitat      
Bitte lies doch genau... nicht in eine Variable, sondern Spalte oder Zeile einer neuen Matrix derart M = [RF_AS_12.9, IM_AS_12.9, ...]. Ich habe den Workspace einer .mat Datei nur deswegen gepostet, um meinen Helfern einen Einblick in das was in eine Spalte oder Zeile soll, zu geben. Ob das so geht weiss ich selbst auch nicht, da es sich bei den Variablen im Workspace einer .mat Datei um verschiedene Objekte handelt und ich dafür nach einer Lösung suche.
Danke und Gruß Romaxxx
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.07.2013, 13:06     Titel:
  Antworten mit Zitat      
das läst sich denke ich mit
Code:

Code:

Code:

und einer for-schleife lösen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 24.07.2013, 13:17     Titel:
  Antworten mit Zitat      
Hallo Romaxxx,

"Bitte lies doch genau"? Ist das dein Ernst? Winkow gibt sich die Mühe, dir auf so eine unklare Fragestellung eine Antwort zu geben und du dankst ihm so?
Bitte bedenke, dass die Leute hier auf Posts antworten, weil sie helfen möchten und nicht weil sie es müssen. So ein Verhalten und eine unklare Fragestellung schrecken ab.

Btw. führ so eine unklare Fragestellung auch zu so einer allgemeinen Antwort, wie sie Winkow dir jetzt gegeben hat.

Den Beitrag schreibe ich nicht um dir zu helfen, sondern aus Achtung vor Winkow und allen Anderen, der sich hier im Forum Mühe geben Anregungen zu geben und Probleme zu lösen.

Viele Grüße
Chris
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 24.07.2013, 13:21     Titel:
  Antworten mit Zitat      
Romaxxx hat Folgendes geschrieben:
Bitte lies doch genau... nicht in eine Variable, sondern Spalte oder Zeile einer neuen Matrix derart M = [RF_AS_12.9, IM_AS_12.9, ...]. Ich habe den Workspace einer .mat Datei nur deswegen gepostet, um meinen Helfern einen Einblick in das was in eine Spalte oder Zeile soll, zu geben.

Wie überaus generös und hochmütig, deinem Gesinde solch tiefgreifende Einblicke zu gewähren. </sarkasmus off>

Die richtige Antwort wäre eine ordentliche Beschreibung deines Problems, so dass man es versteht, ohne das mehrfach nachgefaßt werden muss.
So lange du DEINE Probleme nicht so formulieren kannst, dass sie verständlich sind, sind sie auch nicht von ANDEREN zu verstehen und ergo nicht zu lösen.

Edit: BlackDread war schneller mit der Formulierung. Und Winkow, ich bewundere gerade den Stil, mit dem du diese Beleidigung beantwortest Cool
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 24.07.2013, 14:23     Titel:
  Antworten mit Zitat      
Hallo zusammen,

da Romaxxx zu ersten mal ans Forum wendet, und sich nicht so gut im Fragestellen auskennt, möchte ich doch alle bitten dies zu berücksichtigen und einfach in solchen Fällen an den gomatlab Knigge denken.

Romaxxx, die Fragen richtig zu stellen ist wichtig, und das ist genau so schwer, wie eine Antwort darauf zu geben.
Obwohl dir dein Problem offensichtlich erscheint, ist dies für uns nicht.
90 Prozent der Arbeit und Erfolgs liegt in Händen des Fragestellers.
Lese bitte noch, wie du die Fragen richtig stellen kannst hier:
http://www.gomatlab.de/faq-richtig-fragen-t6534.html

Jetzt zu deinem Problem:
Du hast einen Ordner mit vielen Dateien, von welchen jede 50 Variablen beinhaltet? Dabei willst jetzt nur die bestimmte Dateien mit der Endung ( Personenkürzel_NK_13.5.mat) laden und zu einer Matrix zusammenfassen?
Ich weiß ich nicht wie du das dir vorgestellt hast, aber wie willst einzelne Variablen in der Matrix ablegen, besonders wo diese unterschiedliche Dimensionen haben?

Also mein Vorschlag wäre genau so wie bei Winkow, aber ich würde jetzt die Dateien einfach in eine Struktur laden, dann hast du für jede Person eigenen Eintrag:
Code:

path2dir  = 'C:\Temp\Messungen'
files        = dir(fullfile(path2dir  , '*NK_13.5.mat'))
files        = {files.name}

MyData  = []
for k=1:length(files)
    MyData = [MyData, load(fulfile(path2dir, files{k}))]
end

fprintf('Anzahl der Personen %d\n', length(MyData))


 



zugreifen auf Die Daten kannst du dann so: MyData(1)....MyData(n)
Private Nachricht senden Benutzer-Profile anzeigen
 
Romaxxx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 12:12     Titel:
  Antworten mit Zitat      
Hallo zusammen,

erst einmal Danke für die Hilfe.
Ich dachte nicht, dass das für solche Reaktion sorgt.
Entschuldigt meinem Umgangston.

Folgendes nun weiter zu meinem Problem.
Durch denny und auch euch anderen Helfern, bin ich nun beinahe an meinem Ziel angelangt.

Code:
path2dir = 'data\results' ;
files = dir(fullfile(path2dir));
files = {files.name};

NK1_2_9 = [];
NK1_3_5 = [];
NK1_4_2 = [];
NK1_NN = [];
NK2_2_9 = [];
NK2_3_5 = [];
NK2_4_2 = [];
NK2_NN= [];
AS_2_9 = [];
AS_3_5 = [];
AS_4_2 = [];
AS_NN = [];
for k=3:12:length(files)
NK1_2_9 = [NK1_2_9, load(fullfile(path2dir, files{k}))] ;
NK1_3_5 = [NK1_3_5, load(fullfile(path2dir, files{k+1}))];
NK1_4_2 = [NK1_4_2, load(fullfile(path2dir, files{k+2}))];
NK1_NN = [NK1_NN, load(fullfile(path2dir, files{k+3}))];
NK2_2_9 = [NK2_2_9, load(fullfile(path2dir, files{k+4}))] ;
NK2_3_5 = [NK2_3_5, load(fullfile(path2dir, files{k+5}))];
NK2_4_2 = [NK2_4_2, load(fullfile(path2dir, files{k+6}))];
NK2_NN = [NK2_NN, load(fullfile(path2dir, files{k+7}))];
AS_2_9 = [AS_2_9, load(fullfile(path2dir, files{k+8}))] ;
AS_3_5 = [AS_3_5, load(fullfile(path2dir, files{k+9}))];
AS_4_2 = [AS_4_2, load(fullfile(path2dir, files{k+10}))];
AS_NN = [AS_NN, load(fullfile(path2dir, files{k+11}))];
end

fprintf('Anzahl der Personen %d\n', length(NK1_2_9))
 


Wie ihr seht, handelt es sich um 12 Konfigurationen/Matrizen.
Was mir nun noch fehlt, ist, dass der Name der jeweilige .mat Datei, welche für Probanden und deren Konfiguration steht, in der Struktur als Name auftaucht. Bisher steht lediglich struct<1x1> als Name. (siehe angehängtes Bild)

Danke und Grüße
Romaxxx

Unbenannt.jpg
 Beschreibung:

Download
 Dateiname:  Unbenannt.jpg
 Dateigröße:  120.31 KB
 Heruntergeladen:  514 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Romaxxx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 23:10     Titel:
  Antworten mit Zitat      
Hallo zusammen,

ich hab nun noch folgendes probiert, was aber leider zu einem Fehler führte.
Ich wollte in die erste Zeile der Struktur den Namen der .mat Datei einfügen und in der zweiten das jeweilige <struct 1x1>.

Code:
path2dir = 'data\results' ;
files = dir(fullfile(path2dir));
files = {files.name};

NK1_2_9 = [];
NK1_3_5 = [];
NK1_4_2 = [];
NK1_NN = [];
NK2_2_9 = [];
NK2_3_5 = [];
NK2_4_2 = [];
NK2_NN= [];
AS_2_9 = [];
AS_3_5 = [];
AS_4_2 = [];
AS_NN = [];
NK1_2_9 = [files{1,3}; load(fullfile(path2dir, files{3}))];
NK1_3_5 = [files{1,4}; load(fullfile(path2dir, files{4}))];
NK1_4_2 = [files{1,5}; load(fullfile(path2dir, files{5}))];
NK1_NN = [files{1,6}; load(fullfile(path2dir, files{6}))];
NK2_2_9 = [files{1,7}; load(fullfile(path2dir, files{7}))] ;
NK2_3_5 = [files{1,8}; load(fullfile(path2dir, files{8}))];
NK2_4_2 = [files{1,9}; load(fullfile(path2dir, files{9}))];
NK2_NN = [files{1,10}; load(fullfile(path2dir, files{10}))];
AS_2_9 = [files{1,11}; load(fullfile(path2dir, files{11}))];
AS_3_5 = [files{1,12}; load(fullfile(path2dir, files{12}))];
AS_4_2 = [files{1,13}; load(fullfile(path2dir, files{13}))];
AS_NN = [files{1,14}; load(fullfile(path2dir, files{14}))];
for k=15:12:length(files)
NK1_2_9 = [NK1_2_9(1,:), files{1,k}; NK1_2_9(2,:), load(fullfile(path2dir, files{k}))];
NK1_3_5 = [NK1_3_5(1,:), files{1,k+1}; NK1_3_5(2,:), load(fullfile(path2dir, files{k+1}))];
NK1_4_2 = [NK1_4_2(1,:), files{1,k+2}; NK1_4_2(2,:), load(fullfile(path2dir, files{k+2}))];
NK1_NN = [NK1_NN(1,:), files{1,k+3}; NK1_NN(2,:), load(fullfile(path2dir, files{k+3}))];
NK2_2_9 = [NK2_2_9(1,:), files{1,k+4}; NK2_2_9(2,:), load(fullfile(path2dir, files{k+4}))] ;
NK2_3_5 = [NK2_3_5(1,:), files{1,k+5}; NK2_3_5(2,:), load(fullfile(path2dir, files{k+5}))];
NK2_4_2 = [NK2_4_2(1,:), files{1,k+6}; NK2_4_2(2,:), load(fullfile(path2dir, files{k+6}))];
NK2_NN = [NK2_NN(1,:), files{1,k+7}; NK2_NN(2,:), load(fullfile(path2dir, files{k+7}))];
AS_2_9 = [AS_2_9(1,:), files{1,k+8}; AS_2_9(2,:), load(fullfile(path2dir, files{k+8}))];
AS_3_5 = [AS_3_5(1,:), files{1,k+9}; AS_3_5(2,:), load(fullfile(path2dir, files{k+9}))];
AS_4_2 = [AS_4_2(1,:), files{1,k+10}; AS_4_2(2,:), load(fullfile(path2dir, files{k+10}))];
AS_NN = [AS_NN(1,:), files{1,k+11}; AS_NN(2,:), load(fullfile(path2dir, files{k+11}))];
end

fprintf('Anzahl der Personen %d\n', size(NK1_2_9,1))


Error using vertcat
The following error occurred converting from char to struct:
Error using struct
Conversion to struct from char is not possible.


Vielen Dank für die weitere Hilfe.
Gruß Romaxxx
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.07.2013, 12:06     Titel:
  Antworten mit Zitat      
Hallo

Ich glaube du denkst viel zu kompliziert, deswegen vielleicht kannst auch das Problem ja nicht eindeutig beschreiben. Den Code was du gepostest hast, macht so doch keinen Sinn. Ich kann daraus leider nicht erschließen was du erreichen willst.

Ich versuche zum Umschreiben, wie ich dein Problem bis jetzt verstehe.
Was du möchtest ist alle Files laden zu können, sagen wir in eine Liste z.B Struktur. Jede Datei hat so ca. 50 Variablen. Außerdem möchtest auch den Files zuordnen?


Code:

path2dir = 'data\results' ;
files = dir(fullfile(path2dir));
files = {files.name};


% Du kannst in der Struktur beliebig  Felder benennen
% denk z.B an den realen Objekt, z.B. ein Mensch hat Namen,
% Das Feld kann man dann Name nennen
% Alter und Gewicht kann als weitere Felder definieren usw

% z.B man könnte auch so machen
Person.Data   = []
Person.Name  ={}
Person.ID       = zeros(1, length(files))
for k=1:length(files)
  Person.Data       = [Person.Data, load(fullfile(path2dir, files{k}))];
  PName              = regexprep(files{k},'(^\w\w_)|(\.mat$)','');
  PID                   = find(strcmp(Person.Name, PName));
  if isempty(PID)
     Person.Name = [Person.Name, PName]
     PID               = length(Person.Name);
  end
  Person.ID(k)      =  PID;
end

% jetzt kannst du deine Struktur durchsuchen
% z.B du suchst nach AS_12.9
posPers  = find(strcmp(Person.Name,'AS_12.9')
% jetzt kannst du nach Einträgen für diese Person in deiner Liste machen
posEintraege    = Person.ID==posPers

% jetzt kannst dir alle Einträge ausgeben
Eintraege =  Person.Data(posEintraege)

% das noch eine Struct, auf die Elemente kann entweder in Loop zugreifen
% wenn du nur bestimmte Daten brauchst, kann man die so zugreifen
Hz = [Eintraege.Hz]
% hier könnte aber auch CAT Funktion hilfreich sein



 



PS:

Nach deine Fragen zu beurteilen, gehe ich davon aus, dass dir das Grundverständnis für die Datentypen fehlen, da würde ich wärmsten empfehlen in der Doku Getting Started Kapiteln durchzunehmen
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 26.07.2013, 12:08 Uhr von denny
Von GUIs nach Programmierung
 
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.