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

Mehrdimensionalen Array sortieren

 

Worker
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.09.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2020, 08:56     Titel: Mehrdimensionalen Array sortieren
  Antworten mit Zitat      
Hallo Zusammen,
ich habe aus einer Datenquelle Informationen eingelesen. Nach aufwändigen Bearbeitungen erhalte ich einen Vektor der Größe n x 11.
Darin befindet sich in Spalte 1-3 die Uhrzeit (Stunde, Minute, Sekunde) des Logs.
Die restlichen 8 Spalten sind meine Daten.

Ich würde dieses Array gerne nach der Uhrzeit sortieren. Außerdem wäre es toll, wenn Logs mit der gleichen Uhrzeit in einer Zeile zusammen geführt werden.

Array vorher:


hh mm ss d1 d2 d3 d4 d5 d6 d7 d8
11 39 31 0 238.6 0 0 0 0 0 0
11 39 34 0 238.6 0 0 0 0 0 0
11 39 37 0 238.5 0 0 0 0 0 0
11 39 40 4.6 238.7 0 0 0 0 0 0
11 39 55 4.13 238.7 0 0 0 0 0 0
11 39 58 4.07 238.7 0 0 0 0 0 0
11 40 1 4 238.7 0 0 0 0 0 0
11 40 4 3.94 239 0 0 0 0 0 0
11 40 7 3.88 239 0 0 0 0 0 0
11 40 10 3.82 239 0 0 0 0 0 0
11 40 13 3.77 239 0 0 0 0 0 0
11 40 16 3.72 239 0 0 0 0 0 0
11 40 19 3.69 238.2 0 0 0 0 0 0
11 40 22 0 238.8 0 0 0 0 0 0
11 40 25 0 239 0 0 0 0 0 0
11 40 28 2.32 238.5 0 0 0 0 0 0
11 40 31 0 239 0 0 0 0 0 0
11 40 34 0 238.5 0 0 0 0 0 0
11 40 37 3.78 236.3 0 0 0 0 0 0
11 40 40 0 238.6 0 0 0 0 0 0
11 40 43 0 238.6 0 0 0 0 0 0
11 40 46 0 238.7 0 0 0 0 0 0
11 40 49 0 238.9 0 0 0 0 0 0
11 40 52 3.63 238 0 0 0 0 0 0
11 40 55 0 239 0 0 0 0 0 0
11 40 58 0 238.7 0 0 0 0 0 0
11 41 1 3.83 236.5 0 0 0 0 0 0
11 41 4 0 238.8 0 0 0 0 0 0
11 41 7 0 238.9 0 0 0 0 0 0
11 41 10 3.84 236.5 0 0 0 0 0 0
11 41 14 0 238.7 0 0 0 0 0 0
11 41 16 0 239 0 0 0 0 0 0
11 41 20 0 238.3 0 0 0 0 0 0
11 39 52 0 0 56.675 91.1 52.8 3.2043 0 0
11 39 55 0 0 57.797 102 61 3.7695 2.6809 0
11 39 58 0 0 58.649 111 68.1 2.8625 2.3257 0
11 40 1 0 0 59.675 121 75.1 3.5104 2.3744 0
11 40 4 0 0 60.66 131 81.8 3.3153 2.1819 0
11 40 7 0 0 61.598 141 86.4 3.1514 1.5329 0
11 40 10 0 0 62.565 151 88.5 3.3103 0.69682 0
11 40 13 0 0 63.395 159 89.5 2.7868 0.3124 0
11 40 16 0 0 64.247 168 90.4 2.8626 0.30921 0
11 40 19 0 0 64.553 171 91.4 1.0454 0.32161 0
11 40 28 0 0 102.8 562 85.2 43.097 -0.68402 0
11 40 37 0 0 62.513 150 75.9 -45.416 -1.0188 0
11 40 52 0 0 65.565 181 65.6 2.0651 -0.68385 0
11 41 1 0 0 61.749 142 66.8 -4.3009 0.12693 0
11 41 10 0 0 61.589 141 71.3 -0.18107 0.49945 0
11 40 16 0 0 0 0 0 0 0 100
11 40 19 0 0 0 0 0 0 0 100


Gewünschter Zustand:

hh mm ss d1 d2 d3 d4 d5 d6 d7 d8
11 39 31 0 238.6 0 0 0 0 0 0
11 39 34 0 238.6 0 0 0 0 0 0
11 39 37 0 238.5 0 0 0 0 0 0
11 39 40 4.6 238.7 0 0 0 0 0 0
11 39 52 0 0 56.675 91.1 52.8 3.2043 0 0
11 39 55 4.13 238.7 57.797 102 61 3.7695 2.6809 0
11 39 58 4.07 238.7 58.649 111 68.1 2.8625 2.3257 0
11 40 1 4 238.7 59.675 121 75.1 3.5104 2.3744 0
11 40 4 3.94 239 60.66 131 81.8 3.3153 2.1819 0
11 40 7 3.88 239 61.598 141 86.4 3.1514 1.5329 0
11 40 10 3.82 239 62.565 151 88.5 3.3103 0.69682 0
11 40 13 3.77 239 63.395 159 89.5 2.7868 0.3124 0
11 40 16 3.72 239 64.247 168 90.4 2.8626 0.30921 100
11 40 19 3.69 238.2 64.553 171 91.4 1.0454 0.32161 100
11 40 22 0 238.8 0 0 0 0 0 0
11 40 25 0 239 0 0 0 0 0 0
11 40 28 2.32 238.5 102.8 562 85.2 43.097 -0.68402 0
11 40 31 0 239 0 0 0 0 0 0
11 40 34 0 238.5 0 0 0 0 0 0
11 40 37 3.78 236.3 62.513 150 75.9 -45.416 -1.0188 0
11 40 40 0 238.6 0 0 0 0 0 0
11 40 43 0 238.6 0 0 0 0 0 0
11 40 46 0 238.7 0 0 0 0 0 0
11 40 49 0 238.9 0 0 0 0 0 0
11 40 52 3.63 238 65.565 181 65.6 2.0651 -0.68385 0
11 40 55 0 239 0 0 0 0 0 0
11 40 58 0 238.7 0 0 0 0 0 0
11 41 1 3.83 236.5 61.749 142 66.8 -4.3009 0.12693 0
11 41 4 0 238.8 0 0 0 0 0 0
11 41 7 0 238.9 0 0 0 0 0 0
11 41 10 3.84 236.5 61.589 141 71.3 -0.18107 0.49945 0
11 41 14 0 238.7 0 0 0 0 0 0
11 41 16 0 239 0 0 0 0 0 0
11 41 20 0 238.3 0 0 0 0 0 0

Mit sortrow habe ich bereits experimentiert, kam aber leider nicht auf das gewünschte Ergebnis. Würde mich sehr freuen, wenn mir jemand helfen könnte. Arbeite leider noch nicht lange mit Matlab.

Vielen Dank im Voraus.

Array (vorher).jpg
 Beschreibung:
Zur besseren Darstellung hier ein JPG

Download
 Dateiname:  Array (vorher).jpg
 Dateigröße:  709.31 KB
 Heruntergeladen:  296 mal
Private Nachricht senden Benutzer-Profile anzeigen


T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2020, 09:10     Titel:
  Antworten mit Zitat      
sortrows sollte eignetlich genau das machen was du möchtest,

Code:


was genau ist denn am Ergebnis nicht wie gewünscht?
Wie genau meinst du Zusammenführen? Aufaddieren? Oder möchtest du weitere Werte dort einfügen. In letzterem Fall würde ich evtl. auf ein Cell Array umsteigen.

Zuletzt bearbeitet von T16 am 11.09.2020, 10:55, insgesamt einmal bearbeitet
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: 11.09.2020, 10:52     Titel:
  Antworten mit Zitat      
Hallo,

was genau hast du mit sortrows versucht?

Zitat:
Außerdem wäre es toll, wenn Logs mit der gleichen Uhrzeit in einer Zeile zusammen geführt werden.

Wie soll das passieren? Sollen die Werte summiert oder gemittelt werden, oder etwas ganz anderes?
Generell würde ich dafür findgroups / splitapply empfehlen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Worker
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.09.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2020, 11:37     Titel:
  Antworten mit Zitat      
Also im Prinzip ist mein Array die Zusammenführung von 3 Arrays.

Die Idee ist es nun, diese drei Abschnitte zu vereinen. So dass am Ende die Uhrzeit sortiert ist. Das klappt mit sortrows
Dabei wird man dann feststellen, dass beispielsweise 11:40:16 Uhr 3x im Array vorkommt. Diese zusammengehörigen Daten , sollten nun in einer Zeile landen.

Ich hoffe es ist nun etwas verständlicher.
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: 11.09.2020, 14:32     Titel:
  Antworten mit Zitat      
Hallo,

was "in einer Zeile landen" heißt, ist nicht wirklich klar.
In dem Beispiel ist es z.B. so, dass in den zusammenfassenden Zeilen in jeder Datenspalte nur ein von 0 verschiedener Wert steht. Ist das immer so? Wenn nicht, wie sollen diese von 0 verschiedenen Werte zusammengefasst werden?

Für das vorliegende Beispiel:
Code:
[gp, g1, g2, g3] = findgroups(data(:,1), data(:,2), data(:,3));
res = cell2mat(splitapply(@(x) {sum(x, 1)}, data(:, 4:end), gp));
final = [g1, g2, g3, res]

Das sortiert auch gleich.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.