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

Random Permutationswerte verschiedenen Vektoren zuordnen

 

lolax98
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.05.2021, 20:02     Titel: Random Permutationswerte verschiedenen Vektoren zuordnen
  Antworten mit Zitat      
Hallo zusammen,

ich habe acht Vektoren und möchte diese random kombinieren. Ich habe mit
Code:
acht Permutationen erstellt und möchte nun jeder Zahl (von 1 bis 8) genau einem Vektor zuordnen, wie kann ich das machen?

Vielen Dank im Voraus für Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.05.2021, 22:26     Titel:
  Antworten mit Zitat      
Hallo,

in welcher Form liegen die Vektoren vor? Als Zeilen / Spalten einer Matrix, als Elemente von Cells, als ganz was anderes?
Und wie stellst du dir diese "Zuordnung" vor?

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
 
lolax98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2021, 08:11     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für deine Antwort! Die Vektoren liegen als Zeilen einer Matrix vor. Die Vektoren haben die Namen L1 bis L8 und wenn sozusagen die erste Zahl der Permutation eine 4 ist, dann soll dies dem Vektor L4 entsprechen, usw.

Viele Grüße
Lea
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.05.2021, 09:23     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nun immer noch nicht wirklich, was eigentlich das Ergebnis sein soll. Falls es eine Umsortierung der Vektoren sein soll:
Code:
M2 = M(r, :);


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
 
lolax98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2021, 09:29     Titel:
  Antworten mit Zitat      
Hallo,

also die Vektoren L1 bis L8 sollen dann abhängig von der Permutation in eine neue Matrix geschrieben werden (untereinander). Und deswegen muss ich irgendwie "bestimmen", dass die Zahl 1 z.B. dem Vektor L1 entspricht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.05.2021, 09:39     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
also die Vektoren L1 bis L8 sollen dann abhängig von der Permutation in eine neue Matrix geschrieben werden (untereinander).

Hast du den Vorschlag denn ausprobiert?

Zitat:
Und deswegen muss ich irgendwie "bestimmen", dass die Zahl 1 z.B. dem Vektor L1 entspricht.

Ist wahrscheinlich kein Problem, wenn ich verstehe, was du meinst. Leider verstehe ich nicht, was hier was entsprechen soll.

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
 
lolax98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2021, 09:58     Titel:
  Antworten mit Zitat      
Hallo,

sorry, dass ich so viel Verwirrung stifte. Ich muss mich nochmal korrigieren, die Vektoren liegen als Spalten einer Matrix vor. In der aktuellen Matrix l sind sie der Reihenfolge von l1 bis l8 untereinander angeordnet. (Dimensionen siehe Screenshot) In der neuen Matrix sollen sie nun anders angeordnet sein, je nachdem was die Permutation ausgibt. Also wenn die Permutation so:
Code:
r = randperm(8)

r =

     4     3     7     8     1     5     6     2
aussieht, dann soll in der neuen Matrix nicht l1 an oberster/erster Stelle angeordnet sein sondern zuerst l4, dann l3, l7 usw.

LG

Screenshot 2021-05-29 at 10.51.17.png
 Beschreibung:

Download
 Dateiname:  Screenshot 2021-05-29 at 10.51.17.png
 Dateigröße:  56.93 KB
 Heruntergeladen:  168 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Ich muss mich nochmal korrigieren, die Vektoren liegen als Spalten einer Matrix vor.

Laut Screenshot nicht. Das sind entweder Variablen im Workspace oder Felder einer Struktur. Der Screenshot ist zu eng bemessen um das unterscheiden zu können.

Falls es Variablen im Workspace sind, ist eine automatisierte Umordnung nach r nur mit eval möglich, und eval ist generell nicht empfehlenswert.

Meine Empfehlung wäre, die unterschiedlich langen Vektoren l1 bis l8 in einem Cell Array C abzulegen. Dann sollte das gehen:
Code:


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
 
lolax98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2021, 10:20     Titel:
  Antworten mit Zitat      
Hallo,

okay, im Anhang mal ein Ausschnitt von l1.
Wenn ich l1 bis l8 in einem Cell Array C ablege mit der Dimension 3001x1 und dann deinen vorgeschlagenen Befehl anwende, dann ist die neue Matrix M nur 8x1 groß, also l1 bis l8 werden nicht neu untereinander geschrieben sondern durch die Permutation werden nur die ersten 8 Zeilen des Cell Arrays neu sortiert.

Screenshot 2021-05-29 at 11.14.48.png
 Beschreibung:

Download
 Dateiname:  Screenshot 2021-05-29 at 11.14.48.png
 Dateigröße:  115.57 KB
 Heruntergeladen:  146 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
okay, im Anhang mal ein Ausschnitt von l1.

Sorry, aber welchen Mehrwert soll das bringen?

Zitat:
Wenn ich l1 bis l8 in einem Cell Array C ablege mit der Dimension 3001x1

Das ist so nicht sinnvoll. Wenn es 8 Vektoren sind, muss die Dimension 8x1 (oder 1x8) sein.

Hier ein Beispiel mit 3 Vektoren, das sich erweitern lassen sollte.
Code:
l1 = (1:3)';
l2 = (4:7)';
l3 = (8:9)';
C = {l1, l2, l3}
r = randperm(3);
M = vertcat(C{r});


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
 
lolax98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2021, 11:45     Titel:
  Antworten mit Zitat      
Hallo,

vielen lieben Dank, der Code funktioniert! Meine Matrix M wird allerdings nochmal verschachtelt angezeigt und ich würde gerne die Inhalte der einzelnen Zellen direkt anzeigen lassen und untereinander geschrieben haben..

Screenshot 2021-05-29 at 12.43.56.png
 Beschreibung:
Matrix M

Download
 Dateiname:  Screenshot 2021-05-29 at 12.43.56.png
 Dateigröße:  27.5 KB
 Heruntergeladen:  146 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.05.2021, 18:56     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe zudem nicht, warum du auf der inneren Ebene nochmal ein Cell Array hast. cell2mat sollte Abhilfe schaffen.

Falls das nicht weiter hilft: in meinem Beispiel wurde ja ein langer Vektor daraus. Es liegt also an dir herauszufinden (und, falls du dann nicht weiterkommst, hier mitzuteilen), was in deinem Fall anders ist.

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
 
lolax98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2021, 09:14     Titel:
  Antworten mit Zitat      
Hallo nochmal,

cell2mat hat funktioniert, kann jetzt alle Werte sehen ohne Verschachtelung!

Vielen Dank für die Hilfe
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.