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

Permutation der Matrix

 

junge21
Forum-Newbie

Forum-Newbie



Beiträge: 9
Anmeldedatum: 09.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2011, 19:18     Titel: Permutation der Matrix
  Antworten mit Zitat      
Hallo!
Kann mir jemand sagen, wie ich die Matrizen permutieren kann. Also am Beispiel:

Ich habe folgende 3x3 Matrix: M=([1 2 3; 4 5 6; 7 8 9])

Ich will nun alle mögliche Permutationen davon haben. Also sowas wie:
M1=([1 2 3; 4 5 6; 7 8 9]), M2=([1 3 2; 4 5 6; 7 8 9]) usw.
Also ich bräuchte praktisch gleichen Befehl wie "perms", aber nur für Matrizen. Geht das überhaupt?

Danke im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 07.07.2011, 19:36     Titel:
  Antworten mit Zitat      
Es gibt diesen Befehl für Matrizen

Code:


Da musst du dann aber explizit über order angegeben was getauscht werden soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
junge21
Themenstarter

Forum-Newbie

Forum-Newbie



Beiträge: 9
Anmeldedatum: 09.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2011, 20:08     Titel:
  Antworten mit Zitat      
DSP hat Folgendes geschrieben:
Es gibt diesen Befehl für Matrizen

Code:


Da musst du dann aber explizit über order angegeben was getauscht werden soll.


Können Sie mir das bitte genauer am Beispiel erklären. Wie kann man daraus alle mögliche Permutationen einer nxn Matrix darstellen lassen?
Diesen Befehl habe ich auch in MatLab-Bibliothek gefunden...aber verstehen kann ich das leider nicht so.
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 07.07.2011, 20:31     Titel:
  Antworten mit Zitat      
Code:


funktioniert doch. Danach kannst du mit reshape() die einzelnen Zeilen wieder zu einer 3x3 Matrix machen.
Private Nachricht senden Benutzer-Profile anzeigen
 
junge21
Themenstarter

Forum-Newbie

Forum-Newbie



Beiträge: 9
Anmeldedatum: 09.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2011, 20:40     Titel:
  Antworten mit Zitat      
eupho hat Folgendes geschrieben:
Code:


funktioniert doch. Danach kannst du mit reshape() die einzelnen Zeilen wieder zu einer 3x3 Matrix machen.


Das ist gar nicht das, was ich wollte. Ich hätte gerne alle Permutationen von MATRIZEN! Was Sie mir schreiben ist nichts anderes als einfach "perms(M)". Also Permutationen von Vektoren.
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 07.07.2011, 21:32     Titel:
  Antworten mit Zitat      
Was sind denn nach deiner Auffassung Permutationen von Matrizen? Willst du nur Spalten oder nur Zeilen permutieren? Dann brauchst du permute. Willst du alles permutieren, dann nimmst du meinen Vorschlag und machst ggfs einen reshape.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.07.2011, 23:33     Titel: Re: Permutation der Matrix
  Antworten mit Zitat      
Hallo junge21,

Die Variablen "M1", "M2" etc dynamisch zu erstellen ist eine schlechte Idee. Verwende besser ein Cell Array.
Code:
M = [1 2 3; 4 5 6; 7 8 9];
P = transpose(perms(M));
P = reshape(P, 3, 3, []);
C = num2cell(P, 1:2);

Ich halte euphos Vorschlag aber für zielführender: Einfach die Zeilen von "perms(M)" zu benutzen ist effizienter als 362.880 einzelne Matrizen zu erstellen. Wenn Du M als DOUBLE speicherst, verbracuht das zwar nur 200MB. Für eine 3x4 Matrix sprengt das aber bereits den Rahmen üblicher Computer. Deswegen werden Permutationen überlicherweise dynamisch erzeugt, also eine nach der anderen.

Gruß, Jan
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.