简体   繁体   中英

Matlab multiply each row in matrix by different number

Say that I have a matrix:

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

Is there a way to multiply :
row 1 by 1
row 2 by 2
row 3 by 3
and so on?

I am able to do this with for loops, however it if for an assignment where they want us to use matrices. In the actual assignment A is filled with random number but each row which by multiplied consecutively.

Thanks, any help is much appreciated

You just need to multiply a diagonal matrix by A like so.

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

You can use bsxfun to accomplish this easily and very quickly

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

In newer versions of MATLAB (R2016b and newer) you can actually replace bsxfun with simply *

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM