2016-10-19 7 views
4

sagen, dass ich eine Matrix haben:Matlab multiplizieren jede Reihe in der Matrix durch unterschiedliche Anzahl

A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12]; 

Gibt es eine Möglichkeit zu multiplizieren:
Reihe 1 von 1
Reihe 2 von 2
Reihe 3 von 3
und so weiter?

Ich bin in der Lage, dies mit for-Schleifen zu tun, aber es für eine Aufgabe, wo sie uns Matrizen verwenden sollen. In der tatsächlichen Zuordnung ist A mit Zufallszahl gefüllt, aber jede Zeile, die nacheinander multipliziert wird.

Danke, jede mögliche Hilfe viel

geschätzt
+2

Haben Ein Blick auf die 'bsxfun'-Funktion - es macht genau das, was Sie tun möchten. – MrAzzaman

Antwort

5

Sie brauchen nur eine Diagonalmatrix von A wie so zu vermehren.

A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12]; 
disp(diag([1 2 3 4]) * A); 

1  2  3 
8 10 12 
21 24 27 
40 44 48 
5

Sie können bsxfun verwenden dies leicht zu erreichen und sehr schnell

out = bsxfun(@times, [1 2 3 4].', A) 

In neueren Versionen von MATLAB (R2016b und neuer) können Sie tatsächlich ersetzen bsxfun mit einfach *

out = [1 2 3 4].' * A; 
Verwandte Themen