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

Alle horizontalen Permutationen einer m kreuz n Matrix

 

tosten84
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 10.05.10
Wohnort: Wesseling
Version: R2007b R2010a
     Beitrag Verfasst am: 02.11.2010, 15:16     Titel: Alle horizontalen Permutationen einer m kreuz n Matrix
  Antworten mit Zitat      
Hallo,
habe ein Problem mit einer Matrix Operation.

und zwar sei gegeben eine m kreuz n Matrix.



Ich will nun alle Möglichkeiten nach folgender Reihe berechnen (wobei a die Matrix ist):

a(1,1)+a(1,2)+...+a(1,n)
. . .
. . .
. . .
a(m,1)+(m,2)+...+a(m,n)

Hat Matlab dafür villeicht schon eine Funktion?
Da die Dimensionen nicht fix im Programmablauf sind sonden sich bei jedem start des Programms ändern kann ich es leider nicht mit for schleifen addieren. Wäre dankbar für eure Hilfe.

Grüße

Tobias[/img][/code]
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 15:49     Titel:
  Antworten mit Zitat      
sum(A) sollte gehen. oder halt transponiert. weiß nicht genau ob er es spaltenweise oder zeilenweise macht. musst mal ausprobieren.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.11.2010, 16:04     Titel: Re: Alle horizontalen Permutationen einer m kreuz n Matrix
  Antworten mit Zitat      
Hallo tosten84,
Zitat:

a(1,1)+a(1,2)+...+a(1,n)
. . .
a(m,1)+(m,2)+...+a(m,n)

Das ist nicht eindeutig. Wie sieht denn die 2. Zeile aus?
Code:
a(1,1) + a(1,2) + ... + a(2,n)

oder
Code:
a(2,1) + a(2,2) + ... + a(2,n)

??
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 02.11.2010, 16:09     Titel:
  Antworten mit Zitat      
Hi,

das machst du so:
Code:

A =

     1     2     3
     4     5     6
     7     8     9

SummeReihe = sum(A')'
 

Gruß,
Vito
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: 02.11.2010, 16:49     Titel:
  Antworten mit Zitat      
Hallo Vito,
Code:

A = rand(3);
SummeReihe = sum(A, 2);
 

Die Dimension anzugeben, über die summiert werden soll, ist effizienter als zweimaliges Transponieren. Siehe "help sum".

Aber wenn tosten84 von "Permutationen" spricht, gehe ich davon aus, dass er nicht einfach Zeilen-Summen meint.

Die Funktion VChooseKRO aus der FEX kann die Indices aller Permutationen erzeugen. Bevor ich aber ein Beispiel zusammenbastele, würde ich doch gerne noch wissen, was genau tosten84 möchte.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
tosten84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 10.05.10
Wohnort: Wesseling
Version: R2007b R2010a
     Beitrag Verfasst am: 09.11.2010, 10:49     Titel:
  Antworten mit Zitat      
Hi, sorry das ich erst so spät antworte, war im Urlaub.
Ja, ich meine nicht nur einfach die Summe aus einer Zeile. Das ist ja trivial.
Ich habe das beispiel von oben noch mal etwas erweitert,
ich hoffe so ist es etwas klarer

a(1,1)+a(1,2)+...+a(1,n)
a(1,1)+a(1,2)+...+a(2,n)
a(1,1)+a(1,2)+...+a(3,n)
. . .
. . .
a(1,1)+a(2,2)+...+a(1,n)
. . .
. . .
a(m,1)+a(m,2)+...+a(m-1,n)
a(m,1)+a(m,2)+...+a(m,n)
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: 09.11.2010, 12:47     Titel:
  Antworten mit Zitat      
Hallo tosten84,

Zitat:
a(1,1)+a(1,2)+...+a(1,n)
a(1,1)+a(1,2)+...+a(2,n)
...
a(m,1)+a(m,2)+...+a(m-1,n)
a(m,1)+a(m,2)+...+a(m,n)

Jetzt ist es eindeutig. Hast Du eine Maximalgröße für "m" und "n"? Die Anzahl der Möglichlkeiten wächst mit M^K nämlich sehr schnell an.

Wie gesagt kann Dir VChooseKRO aus der FEX die gewünschten Permutationen schnell und effizient erzeugen. Es ist wahrscheinlich hilfreich, Integer-Typen als Indices zu verwenden, weil sie weniger Speicher beanspruchen.

Wenn Du keine C-Mex-Files kompilieren kannst oder möchtest, ist "Combinator" (Matt Fig) ein anderes sehr gutes Tool aus der FEX. Als M-File ist es deutlich langsamer und benötigt auch mehr Speicher für die Zwischenergebnisse. Aber wenn es für Deine "n" und "m" reicht, tut es auch genau was es soll.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
tosten84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 10.05.10
Wohnort: Wesseling
Version: R2007b R2010a
     Beitrag Verfasst am: 09.11.2010, 12:55     Titel: Jo, das wars... Danke!
  Antworten mit Zitat      
Hi, danke schon mal. Über combinator bin ich auch grade vor 5 Minuten gestoßen, das löst mein Problem einwandfrei, habs als M-file und das funktioniert. Ja bei großem M und N werd ich Probleme bekommen, aber ich denke das wird sich im Rahmen halten.

Danke für die schnelle Antwort und kompliment ans Forum.

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