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.
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
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
_________________
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
"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.
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 _________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
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:
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)
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>.
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?
% 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));
ifisempty(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
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
Verschoben: 26.07.2013, 12:08 Uhr von denny Von GUIs nach Programmierung
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
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.