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 umsortieren

 

scoobydo
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 14:54     Titel: Matrix umsortieren
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem:
Und zwar habe ich eine Messreihe bestehend aus 24 Messungen mit 4 Geräten und je Gerät und Messung 2000 Samples.
Die Ergebnisse habe ich nun in einer Matrix im Format 48000x4, d.h. ich habe pro Spalte (Gerät) die einzelnen Samples für die Messungen untereinander stehen (2000*24 = 48000).

Die eigentliche Frage ist wie kann ich jetzt ohne eine for-Schleife den Mittelwert aus den 2000 Samples für jede Messungen und Kanal bilden?

Meine Idee war mit reshape die Messungen nebeneinander zu schreiben, so das eine 2000x96 Matrix entsteht.

Es würde mich wirklich freuem, wenn mir da jemand weiterhelfen kann!
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: 10.05.2014, 14:58     Titel:
  Antworten mit Zitat      
hallo. was klappt denn mit dem reshape nicht?
warum willst du keine for schleife benutzen?
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
scoobydo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 15:06     Titel:
  Antworten mit Zitat      
Hallo Winkow,

danke für die schnelle Antwort.
Ich wollte keine for-Schleife nutzen, da ich mal gehört habe das MATLAB Matrixoperationen schneller berechnen kann und für for-Schleifen länger braucht.

Bei reshape weiss ich nicht wie man die Parameter wählen muss, damit die Messungen quasi Blockweise nebeneinander gesetzt werden.
Es würde ja dann eine 2000x96 (4*24=96) Matrix entstehen.
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: 10.05.2014, 15:21     Titel:
  Antworten mit Zitat      
Code:
so ca
for schleifen sind ein wenig langsamer. und wenn man große daten mengen auswerter und das auch sehr oft macht lohnt es sich in der tat eine schnelle lösung zu ersinnen. in den meisten fällen bekommt man aber die zeit die man verwendet hat den code schneller zu machen mit der laufgeschwindigkeit nicht mehr rein ^^. vor allem wenns nicht viele daten sind. darum ist immer die frage ob man so eine optimierte lösung brauch. außerdem sind forschleifen nicht so langsam. sihe dazu auch den thread der sich genau damit beschäftigt im FAQ.
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
scoobydo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 15:42     Titel:
  Antworten mit Zitat      
Denke ich werde auch mit einer Schleife durchführen.

Den reshape Befehl hatte ich auch mal probiert, dass Problem ist nur das er die Werte dann verkehrt umsonst.
Ich möchte die 4 Messwerte pro Messung nebeneinander haben.
Durch den Befehl werden die aber so sortiert das beginnend bei der ersten Spalte immer 2000 Werte nebeneinander gesetzt werden.
D.h. jetzt habe stehen die Messwerte nach Geräten sortiert nebeneinander.

Ist schwer das zu erklären, hier ein vereinfachtes Bsp.
Hier sind es 2 Spalten -> 2 Geräte mit 3 Samples und insgesamt 3 Messung
1 2
1 2
1 2
3 4
3 4
3 4
5 6
5 6
5 6

Die sollen so umsortiert werden:
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich würde es so machen:

Code:
A = [1 2
1 2
1 2
3 4
3 4
3 4
5 6
5 6
5 6];
blocksize = 3;
numblocks = 3;
B = mat2cell(A, repmat(blocksize, 1, numblocks), size(A,2));
B = cell2mat(B')


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 16:54     Titel:
  Antworten mit Zitat      
Hallo Harald,

kannst du evtl. noch ein wenig erläutern was du da machst?^^
Auf mein obiges Bsp. angewendet hatte ich es so versucht, was aber nicht klapt:
Code:


blocksize = 2000;
numblocks = 24;
v_mittel = mat2cell(v, repmat(blocksize, 1, numblocks), size(v,4));
v_mittel = cell2mat(v_mittel')

 

Also ich will 24 Blöcke (statt 3) die jeweils 4 Spalten (statt 2) und 2000 Zeilen (statt 3) haben.

Besten Gruß und schon einmal danke für deine Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.05.2014, 17:03     Titel:
  Antworten mit Zitat      
Hallo,

es muss size(v, 2) oder eben direkt 4 heißen.

Schau dir mal die Hilfe zu cell2mat an. Was ich mache ist letztlich, jeden dieser Blöcke in eine Cell zu stecken.

Mit cellfun kannst du auch mean auf jeden Block anwenden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 17:08     Titel:
  Antworten mit Zitat      
Sauber so wird ein Schuh draus,

besten Dank!
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 - 2024 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.