|
|
Aus Matrizen eines Datasets die zweite Spalte auswählen |
|
onetobeat |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 09.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.10.2012, 17:39
Titel: Aus Matrizen eines Datasets die zweite Spalte auswählen
|
 |
Ich habe folgendes Problem! :-S
Ich habe folgendes Dataset
subject condition angle
P1 1ms [60x9 double]
P1 13ms [60x9 double]
... ... ...
P2 1ms [60x9 double]
P2 13ms [60x9 double]
... ... ...
Ich brauche das gleiche dataset aber nur mit der Information aus der zweiten Spalte der Matrizen. Wie kann ich daraus eine 1x60 Matrix machen? Wie kann ich drauf zugreifen und die Bezeichnungen "P1" und "1ms" beibehalten? Ich habe vor den Mittelwert jedes Probanden für die jeweilige Bedingung für jeden einzelnen der 60 Datenpunkte zu berechnen.
Bin für jeden Tipp sehr dankbar! Habe die ersten Einführungen gelesen, aber keine Lösung gefunden :-S
|
|
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.10.2012, 19:17
Titel:
|
 |
Mir ist nicht ganz klar wie deine Datenstruktur aussieht, aber in etwa so kommst du an die gewünschten Daten:
p1_10ms(:,2)'
(:,2) selektiert dabei die zweite Spalte, wärend ' den 60x1 in einen 1x60 Vektor transponiert.
|
|
|
onetobeat |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 09.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.10.2012, 20:45
Titel:
|
 |
Hi! Danke für deine Antwort!
Das kenn ich aber bereits! Mit geschwungenen Klammern auf eine Zelle zugreifen und auch (:,2) ist relativ einfach.
Nun, siehe Bild, will ich diese Struktur beibehalten, aber anstelle der Matrizen [60x9] die zweite Spalte dieser Matrize anzeigen.
Hat irgendwer ne Lösung?
Beschreibung: |
|
 Download |
Dateiname: |
Ohne Titel-1 Kopie.jpg |
Dateigröße: |
64.63 KB |
Heruntergeladen: |
433 mal |
|
|
|
onetobeat |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 09.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.10.2012, 20:53
Titel:
|
 |
Ich habs mal so versucht, aber so werden die zweiten Spalten nur hintereinandergereiht und verlieren die Zuordnung/Bezeichnung.
[code]for a=1:size(angles)
angle=angles(a); %221 rows of 60x9 matrices
angle_out=angle{1}; %picking the matrices
angle_in=angle_out(:,2);
output_temp=dataset(angle_in);
if exist('output','var')
output = vertcat(output,output_temp); %#ok<AGROW>
else
output = output_temp;
end
end[/code]
[EDITED, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
estorilblau |

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 01.10.12
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: R2006a, R2007b, R2010b
|
 |
|
|
 |
|
Verfasst am: 09.10.2012, 21:50
Titel:
|
 |
Hallo,
verstehe ich das richtig, dass das hochgeladene Bild von dir einem 16x6 cell array entspricht?
Nun möchtest du das cellarray beibehalten, aber anstelle der 60x9 matrixen nur noch jeweils die 2. Spalte der Matrixen in dem cell array stehen haben?
Wenn ja,
Wenn nicht, bitte beschreib nochmal genauer was du machen willst.
|
|
|
onetobeat |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 09.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.10.2012, 08:24
Titel:
|
 |
|
 |
|
Super! Vielen Dank! Das wunderbar funktioniert :D
Wär toll wenn du mir noch beim nächsten Problem hilfst. Dann denke ich, kann ich wieder selber weitermachen :)
Ich möchte den Mittelwert für diese, jetzt allein stehende "zweite Spalte" für jede "condition" berechnen (siehe Bild im Anhang). D.h. die "personen" sollen für jede "condition" zusammengefasst und der Mittelwert berechnet werden.
Ich habs mal so versucht:
[code]condlist = unique(data.condition);
for c = 1:length(condlist)
cond = condlist(c);
personlist = unique(data(data.condition == cond, 'person'));
personlist = personlist.person;
for m = 1:length(personlist)
pers = char(personlist(m,1));
anglevel_mean = mean(double((data(data.condition == cond & data.person == pers , 'angularvel'))));
output_temp=dataset(condlist, anglevel_mean);
if exist('output','var')
output = vertcat(output,output_temp); %#ok<AGROW>
else
output = output_temp;
end
end
end [/code]
Bekomme aber diese Fehlermeldung: "Cannot include a dataset array as a dataset variable. Use concatenation instead."
Beschreibung: |
|
 Download |
Dateiname: |
Ohne Titel-1 Kopie.jpg |
Dateigröße: |
101.47 KB |
Heruntergeladen: |
449 mal |
|
|
|
estorilblau |

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 01.10.12
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: R2006a, R2007b, R2010b
|
 |
|
|
 |
|
Verfasst am: 10.10.2012, 11:59
Titel:
|
 |
Sorry, ich verstehe noch nicht ganz genau was du machen willst. Kannst du es nochmal etwas genauer beschreiben?
|
|
|
onetobeat |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 09.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.10.2012, 12:10
Titel:
|
 |
Ich habe Testpersonen von P1 bis P13. Jede dieser Testpersonen hat 21 Testbedingungen absolviert. Während jeder Testbedingung hab ich beispielsweise Winkelverläufe von Knie, Hüfte usw. gemessen. Dazu hab ich 60 Datenpunkte pro Person pro Testbedingung. Nun würde ich gern den Mittelwert (aller Testpersonen) pro Datenpunkt berechnen. Im Endeffekt möchte ich ein Tabelle haben die so aussieht:
condition angularvel angulardisp
13ms_0d [60x1 double] [60x1 double]
13ms_4d ... ...
...
Besser verständlich oder brauchst du mehr Infos?
|
|
|
|
|
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.
|
|