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

Aus Matrizen eines Datasets die zweite Spalte auswählen

 

onetobeat
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 09.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2012, 17:39     Titel: Aus Matrizen eines Datasets die zweite Spalte auswählen
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2012, 19:17     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
onetobeat
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 09.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2012, 20:45     Titel:
  Antworten mit Zitat      
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?

Ohne Titel-1 Kopie.jpg
 Beschreibung:

Download
 Dateiname:  Ohne Titel-1 Kopie.jpg
 Dateigröße:  64.63 KB
 Heruntergeladen:  433 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
onetobeat
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 09.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2012, 20:53     Titel:
  Antworten mit Zitat      
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!]
Private Nachricht senden Benutzer-Profile anzeigen
 
estorilblau
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 01.10.12
Wohnort: München
Version: R2006a, R2007b, R2010b
     Beitrag Verfasst am: 09.10.2012, 21:50     Titel:
  Antworten mit Zitat      
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,

Code:
rows = size(deincellarray);
for i=1:rows(1)
deincellarray{i,6} = deincellarray{i,6}(:,2};
end


Wenn nicht, bitte beschreib nochmal genauer was du machen willst.
Private Nachricht senden Benutzer-Profile anzeigen
 
onetobeat
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 09.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2012, 08:24     Titel:
  Antworten mit Zitat      
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."

Ohne Titel-1 Kopie.jpg
 Beschreibung:

Download
 Dateiname:  Ohne Titel-1 Kopie.jpg
 Dateigröße:  101.47 KB
 Heruntergeladen:  449 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
estorilblau
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 01.10.12
Wohnort: München
Version: R2006a, R2007b, R2010b
     Beitrag Verfasst am: 10.10.2012, 11:59     Titel:
  Antworten mit Zitat      
Sorry, ich verstehe noch nicht ganz genau was du machen willst. Kannst du es nochmal etwas genauer beschreiben?
Private Nachricht senden Benutzer-Profile anzeigen
 
onetobeat
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 09.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2012, 12:10     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
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.