MatrixA 5x5 mit MatrixB 5x5 multiplizieren = MatrixC 25x25
zander
Forum-Newbie
Beiträge: 4
Anmeldedatum: 29.12.11
Wohnort: ---
Version: ---
Verfasst am : 29.12.2011, 17:59
Titel : MatrixA 5x5 mit MatrixB 5x5 multiplizieren = MatrixC 25x25
Hallo Leute,
als Beispiel:
Eine Matrix A wird mit Matrix B so multipliziert das C eine "Zusammenstellung" der beiden ist.
Mein Versuch diese mit einer FOR-Schleife zu loesen ist mir nicht gelungen.
Kann es auch einfacher gehen ?
Beispiel:
Soweit recht einfach.
ABER nun soll die Ergebnis_Matrix C einen solchen Aufbau haben:
Wer hat so etwas geloest und kann mir helfen ?
Oder muss ich auf die FOR-Schleife zurueckfallen...
Danke fuer euere Zeit.
Harald
Forum-Meister
Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 29.12.2011, 19:00
Titel :
Hallo,
wenn ich das richtig verstehe, ginge es so:
Code:
C = zeros ( size ( A,1 ) *size ( B,1 ) , size ( A,2 ) *size ( B,2 ) ) ;
C = mat2cell ( C, repmat ( size ( A,1 ) ,size ( B,1 ) ,1 ) , repmat ( size ( A,2 ) ,size ( B,2 ) ,1 ) ) ;
C( A == 1 ) = { B} ;
C = cell2mat ( C) ;
Es kann sein, dass ich mich bei den size-Befehlen irgendwo verheddert habe, so dass es nicht so allgemeingültig ist, wie ich es wollte.
Ich würde generell empfehlen, die Beispiele zwar möglichst einfach zu gestalten, aber doch so generisch wie nötig. Eine Diagonalmatrix für A scheint ein Spezialfall zu sein. Falls A immer eine Diagonalmatrix ist, könnte man auch mit BLKDIAG arbeiten.
Grüße,
Harald
Zuletzt bearbeitet von Harald am 29.12.2011, 19:41, insgesamt einmal bearbeitet
Jan S
Moderator
Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
Verfasst am : 29.12.2011, 19:09
Titel : Re: MatrixA 5x5 mit MatrixB 5x5 multiplizieren = MatrixC 25x
Hallo zander,
In Deinem Ergebnis kommt A gar nicht mehr vor. Ist das gewollt?
Zitat:
Eine Matrix A wird mit Matrix B so multipliziert das C eine "Zusammenstellung" der beiden ist.
Ich sehe keine Multiplikation und was bedeutet "Zusammenstellung" hier genau?
Dein C läßt sich so erstellen:
Gruß, Jan
zander
Themenstarter
Forum-Newbie
Beiträge: 4
Anmeldedatum: 29.12.11
Wohnort: ---
Version: ---
Verfasst am : 29.12.2011, 19:24
Titel :
@ Harald:
Herzlichen Dank fuer deine Rueckmeldung. Ich muss das nun probieren. Ich melde mich wenn ich das hinbekommen habe.
Und, ja, die diagonal-Matrix ist hier fuer das Beispiel. Die Variable W kann je nach bedarf geaendert werden, somit dann auch A und B und C.
@ Jan:
A ist sozusagen die Matrix die andeuten soll WO in C die Matrix B reingeschrieben werden muss.
An Alle:
A kann in diesem Fall auch so aussehen:
Dann sollte C wie folgt erstellt worden sein:
Nochmals vielen Dank fuer Eure Rueckmeldung.
zander
Themenstarter
Forum-Newbie
Beiträge: 4
Anmeldedatum: 29.12.11
Wohnort: ---
Version: ---
Verfasst am : 29.12.2011, 19:33
Titel :
@ Harald, @ Alle..
Danke.
Habe das nun hingekriegt.
Die Loesung von Harald hat mir geholfen.
Euch eine guten Rutsch ins Neue Jahr !!!
zander
Themenstarter
Forum-Newbie
Beiträge: 4
Anmeldedatum: 29.12.11
Wohnort: ---
Version: ---
Verfasst am : 29.12.2011, 23:07
Titel :
@ Harald,
deine Loesung lief bei mir allerdings nur mit gleichen Matrixen A = B, also eine 3x3 Matrix A konnte keine 5x5 Matrix B auf 15x15 Matrix C erstellen.
Ich habe nun beigefuegtes Skript geschrieben. Vielleicht kann es dem einen oder anderen helfen...
Danke nochmals an Euch.
Code:
clear all ;
A = [ 1 0 1 ;
0 1 0 ;
1 0 1 ] ;
B = [ 1 1 1 1 1 ;
1 0 0 0 1 ;
1 0 0 0 1
1 0 0 0 1 ;
1 1 1 1 1 ] ;
C2 = zeros ( length ( A) *length ( B) , length ( A) *length ( B) ) ;
C2 = mat2cell ( repmat ( B, length ( A) , length ( A) ) , repmat ( size ( B,1 ) ,size ( A,1 ) ,1 ) , repmat ( size ( B,1 ) ,size ( A,1 ) ,1 ) ) ;
C2( A == 0 ) = zeros ( length ( B) ) ;
C2 = cell2mat ( C2) ;
% all work no fun ?
meshgrid ( length ( C2) ,length ( C2) ,C2) ;
surf ( C2)
Sirius3
Forum-Guru
Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
Verfasst am : 29.12.2011, 23:37
Titel :
Jan S
Moderator
Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
Verfasst am : 30.12.2011, 00:09
Titel :
Hallo zander,
Ah, jetzt wird es mir klar.
Gruß, Jan
Einstellungen und Berechtigungen
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
| 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.