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

Matrix in kleinere Matrizen aufteilen

 

Unrealmirakulix
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 02.06.2013, 02:34     Titel: Matrix in kleinere Matrizen aufteilen
  Antworten mit Zitat      
Hallo zusammen,

habe einen Test mit Probanden gemacht.

Daraus resultiert eine große Matrix, die ich aus Excel importiert habe. Jede Spalte steht für einen Datensatz. In den Zeilen stehen die Messwerte zu den verschiedenen Messvarianten.

Genauer: Jede Zeile steht für einen Probanden. Die Zeilen sind die verschiedenen Testbedingungen. Dabei gliedern sich die Zeilen folgendermaßen:

1. Zeile: Kondition 1: Variante a
2. Zeile: Kondition 1: Variante b
3. Zeile: Kondition 1: Variante c
4. Zeile: Kondition 1: Variante d

5. Zeile: Kondition 2: Variante a
6. Zeile: Kondition 2: Variante b
7. Zeile: Kondition 2: Variante c
8. Zeile: Kondition 2: Variante d

...


Code:
% import data from Excel

tab_n = xlsread('C:\Users\T400\Desktop\Projektpraktikum Bioanaloge Informationsverarbeitung\Kalibierung_Haupttest_geteilteGruppen.xlsx','Tabelle N','B25:Z64');
tab_ci = xlsread('C:\Users\T400\Desktop\Projektpraktikum Bioanaloge Informationsverarbeitung\Kalibierung_Haupttest_geteilteGruppen.xlsx','Tabelle CI','B25:Z64');

% sort data

[M,N] = size(tab_n);    % dimensions of tab_n
M_s = (M-4)/4 + 1;          % M of sorted matrices

tab_n_m = zeros(M_s,N);

for i = 1:(M-4)
    for j = 1:M_s
        for k = 1:N
            tab_n_m(j,k) = [tab_n(i,k)];
            tab_n_w(j,k) = [tab_n(i+1,k)];
            tab_n_r(j,k) = [tab_n(i+2,k)];
            tab_n_ref(j,k) = [tab_n(i+3,k)];
        end
    end
end


tab_n ist eine 40x10 -> 40 Messwerte von 10 Probanden (Gruppe N)
tab_ci ist eine 40x6 -> 40 Messwerte von 6 Probanden (Gruppe CI)

Hab mit den Schleifen glaub ein wenig übertrieben... Hoffe es ist klar, was ich vorhabe. Falls nicht bitte einfach nachfragen Wink

Vielen Dank schon mal,

Daniel

PS: Im Moment schreibt mir mein Code jeweils die letzten Wert korrekt in die neuen Matrizen, nur leider nicht nur in die letzte Zeile, sondern in alle. Ich befürchte, dass der Code die aktuell ausgelesene Zeile immer in alle Zeilen schreibt und so am Ende die letzten 4 Zeilen von tab_n (große Matrix / Input) in den neuen Matizen tab_n_m, tab_n_w, tab_n_r und tab_n_ref (kleine Matrizen / Output) sich nicht nur in der jeweils letzten Zeile wiederfindet sondern auch in allen anderen...
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.06.2013, 10:05     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Hab mit den Schleifen glaub ein wenig übertrieben...

Den Eindruck habe ich auch.

Zitat:
Hoffe es ist klar, was ich vorhabe.

Leider nicht. Dein Code macht ja, wie du selbst festgestellt hast, nicht das, was du haben willst. Leider finde ich aber keine Beschreibung, was du nun wirklich vorhast. Vermutlich würde es schon mal helfen zu wissen, was a-d mit m,w,r und ref zu tun haben.
Wenn du deinen Ausschnitt deiner Daten posten kannst und dazu sagen kannst, welche Variablen am Ende welchen Inhalt haben sollen, wäre das noch besser.
Und für was braucht man hier überhaupt die Tabelle CI?

Code:
Ich befürchte, dass...

Du kannst ja mit dem Debugger selbst mal ansehen, was in welcher Reihenfolge passiert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Unrealmirakulix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 02.06.2013, 15:32     Titel:
  Antworten mit Zitat      
Im der Zeile Darüber stehen jeweils die Namen der Probanden. Ich habe einen s.g. Satztest (Proband hört Satz und muss ihn anschließend wiederholen) mit zwei verschiedenen Gruppen durchgeführt: Normalhörende und CI-Träger (Cochleaimplantat). Die Testbedingungen gliedern sich durch zwei Variablen: Pegel in dB und Variante des Tests (m, w, r und ref). Im Moment habe ich zwei Matrizen (eine mit den Normalhörenden aus Tabelle N und eine mit den CI-Trägern aus Tabelle CI) jetzt muss ich die in jeweils 4 Matrizen aufteilen, die dann nur m, w, r bzw. ref enthalten (siehe Code).

Am Schluss plotte ich das dann in ein Liniendiagramm (x-Achse: Pegel in dB; y-Achse: Prozent der richtigen Worte/Sätze).

Jetzt sollte es etwas klaren sein Wink


da hier kein HTML erlaubt ist: http://jsbin.com/uwuyeb/1
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.06.2013, 16:13     Titel:
  Antworten mit Zitat      
Hallo,

bedenke bei der Beschreibung bitte, dass wahrscheinlich die wenigsten von deiner Anwendung Ahnung haben.
Aus den Daten und dem ursprünglichen Code würde ich vermuten, dass du folgendes willst:

Code:
tab_n_m = tab_n(1:4:end,:);
tab_n_w = tab_n(2:4:end,:);
% etc.
 


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Unrealmirakulix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 02.06.2013, 16:39     Titel:
  Antworten mit Zitat      
perfekt. Vielen dank Smile

Code:
%% II) Verständnis der Sätze (IME-SA)

% import data from Excel

tab_n = xlsread('C:\Users\T400\Desktop\Projektpraktikum Bioanaloge Informationsverarbeitung\Kalibierung_Haupttest_geteilteGruppen.xlsx','Tabelle N','B25:Z64');
tab_ci = xlsread('C:\Users\T400\Desktop\Projektpraktikum Bioanaloge Informationsverarbeitung\Kalibierung_Haupttest_geteilteGruppen.xlsx','Tabelle CI','B25:Z64');

% sort data

[M,N] = size(tab_n);    % dimensions of tab_n
M_s = (M-4)/4 + 1;          % M of sorted matrices

% split into 4 sub-matrices

tab_n_m = tab_n(1:4:end,:);
tab_n_w = tab_n(2:4:end,:);
tab_n_r = tab_n(3:4:end,:);
tab_n_ref = tab_n(4:4:end,:);

tab_ci_m = tab_ci(1:4:end,:);
tab_ci_w = tab_ci(2:4:end,:);
tab_ci_r = tab_ci(3:4:end,:);
tab_ci_ref = tab_ci(4:4:end,:);


Für das Diagramm brauche ich nun nicht nur den Durschnittswert der Werte je Zeile, also wie viel Prozent ein Proband im Schnitt richtig hatte sondern auch die Abweichungen.
Muss ich nun erst mit min(), max() und mean() rechnen oder kann ich das mit einem bestimmten Diagrammtyp direkt plotten lassen?

Soll dann etwa so aussehen wie die Diagramme in dem Paper: http://www.healthaffairs.uci.edu/hesp/publications/jas002412.pdf

Habe hier mal die einfache Variante erstellt ohne Abweichungen:

Code:
% minium, mean and maximum values



% plot data

p = [-25:5:20];

figure(3);
set(0,'DefaultAxesColorOrder',[0 0 0],...
      'DefaultAxesLineStyleOrder','-|-.|--|:')

% put in data N

subplot(121)
plot(p,nanmean(tab_n_m,2),'-ro', p,nanmean(tab_n_w,2)','-.bo', p,nanmean(tab_n_r,2),'-.ro', p,nanmean(tab_n_ref,2),'-bo')
title('\bf Durchschnitt N')
grid on
hleg1 = legend('m','w','r','ref');
set(hleg1,'Location','NorthWest')

subplot(122)
plot(p,nanmean(tab_ci_m,2),'-ro', p,nanmean(tab_ci_w,2),'-.bo', p,nanmean(tab_ci_r,2),'-.ro', p,nanmean(tab_ci_ref,2),'-bo')
title('\bf Durchschnitt CI')
grid on
hleg1 = legend('m','w','r','ref');
set(hleg1,'Location','NorthWest')

% some titles (experimental)
ha = axes('Position',[0 0 1 1],'Xlim',[0 1],'Ylim',[0
1],'Box','off','Visible','off','Units','normalized', 'clipping' , 'off');

text(0.5, 1,'\bf Satzverständnis','HorizontalAlignment','center','VerticalAlignment', 'top')
Private Nachricht senden Benutzer-Profile anzeigen
 
Unrealmirakulix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 11.11.12
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 03.06.2013, 04:07     Titel:
  Antworten mit Zitat      
hier die ganze Datei, dann kann man das besser ausprobieren Wink

Danke schon mal Smile

Auswertung.m
 Beschreibung:

Download
 Dateiname:  Auswertung.m
 Dateigröße:  6.38 KB
 Heruntergeladen:  318 mal
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.