Reputation: 169
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
Upvotes: 7
Views: 5203
Reputation: 65460
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;
Upvotes: 6
Reputation: 1554
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
Upvotes: 9