用Matlab将矩阵中的每一行乘以不同的数

7

假设我有一个矩阵:

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

有没有一种方法可以按以下方式进行乘法:
第1行乘以1
第2行乘以2
第3行乘以3
以此类推?

我可以使用for循环来完成这个任务,但是在作业中他们要求我们使用矩阵。 在实际作业中,A填充了随机数,但每一行都要连续相乘。

谢谢,非常感谢任何帮助。


2
看一下bsxfun函数 - 它正好可以做你想要的事情。 - MrAzzaman
2个回答

9
您只需要像这样将对角矩阵乘以A。
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

6
您可以使用bsxfun轻松快速地完成这个任务。
out = bsxfun(@times, [1 2 3 4].', A)

在较新的MATLAB版本(R2016b及更高版本)中,您实际上可以将bsxfun替换为简单的*

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

1
天啊,那个 . 就是我寻找了几个小时的东西! - JFS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接