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

MxN Cell array neu sortieren

 

Martinuk
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2015, 19:11     Titel: MxN Cell array neu sortieren
  Antworten mit Zitat      
Hallo,

ich möchte gerne ein MxN Cell Array neu sortieren. In dem folgenden Fallbeispiel ist die Dimension 18x2, diese kann aber in der Realität auch 27x3 oder 36x4, ... sein. Die Lösung sollte also allgemein gültig sein.

Die Erklärung wohin ich möchte ist nicht unbedingt ganz einfach, aber ich versuch mal mein Vorhaben anhand eines Bsp. zu erläutern.

Dazu generieren ich einfach mal Daten die jenen der Realität entsprechen.
Code:

a1 = {1:3};
a2 = {4:8};
a3 = {9:15};
A = repmat([a1;a2;a3], 3, 1);
b1 = {21:23};
b2 = {24:28};
b3 = {29:35};
B = repmat([b1;b2;b3], 3, 1);
AB = [A;B];

c1 = {31:33};
c2 = {34:38};
c3 = {39:45};
C= repmat([c1;c2;c3], 3, 1);
d1 = {41:43};
d2 = {44:48};
d3 = {49:55};
D = repmat([d1;d2;d3], 3, 1);
CD = [C;D];

out = [AB, CD]
size(out)


out =
    [1x3 double]    [1x3 double]
    [1x5 double]    [1x5 double]
    [1x7 double]    [1x7 double]
    [1x3 double]    [1x3 double]
    [1x5 double]    [1x5 double]
    [1x7 double]    [1x7 double]
    [1x3 double]    [1x3 double]
    [1x5 double]    [1x5 double]
    [1x7 double]    [1x7 double]
    [1x3 double]    [1x3 double]
    [1x5 double]    [1x5 double]
    [1x7 double]    [1x7 double]
    [1x3 double]    [1x3 double]
    [1x5 double]    [1x5 double]
    [1x7 double]    [1x7 double]
    [1x3 double]    [1x3 double]
    [1x5 double]    [1x5 double]
    [1x7 double]    [1x7 double]

ans =

    18     2
 


Also alle Zellen von Spalte 1 bilden ein Datenpaket (AB), alle Zellen von Spalte 2 sind ebenfalls wieder ein Datenpaket (CD) usw. Die Datenpakete als Solches sind also unabhängig.

Ich möchte die Daten nun so umsortieren, dass in jeder Spalte die Zellen jeweils wie folgt sortiert sind
Code:

[out(1,1); ...
 out(1,10); ...
 out(1,2); ...
 out(1,11); ...
 out(1,3); ...
 out(1,12); ...
 out(1,4); ...
 out(1,13); ...
 out(1,5); ...
 out(1,14); ...
 out(1,6); ...
 out(1,15); ...
 out(1,7); ...
 out(1,16); ...
 out(1,8); ...
 out(1,17); ...
 out(1,9); ...
 out(1,18)]
 


Dasselbe für Spalte 2. Kann man das irgendwie lösen mit reshape, permute, etc. ohne auf eine Schleife zurückgreifen zu müssen?

Wäre cool wenn ihr mir da helfen könntet - hab schon ne Weile rumgespielt, komme aber auch keine Lösung.

Danke.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

da deine Beispielmatrix nur 2 Spalten hat, gehe ich davon aus, dass du Zeilen- und Spaltenindizes verwechselt hast. Dann wäre mein Vorschlag:

Code:
m = size(out1, 1);
idx = reshape([1:m/2; m/2+1:m], 1, []);
out2 = out1(idx, :);


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

Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2015, 21:24     Titel:
  Antworten mit Zitat      
Hallo Harald,

da hast du recht, hab die Indices für Zeile/Spalte vertauscht. Deine Lösung funktioniert einwandfrei, genau nach so etwas habe ich gesucht.

Danke
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.