如何在MATLAB中将矩阵的行除以不同的值(数组除法)

adn*_*adn 7 matlab rows matrix division

让我说我有矩阵M = ones(3);,我想用不同的数字划分每一行,例如,C = [1;2;3];.

1 1 1  -divide_by-> 1      1   1   1
1 1 1  -divide_by-> 2  =  0.5 0.5 0.5
1 1 1  -divide_by-> 3     0.3 0.3 0.3
Run Code Online (Sandbox Code Playgroud)

如何在不使用循环的情况下执行此操作?

zel*_*lus 6

使用正确的数组划分,如此处所述

result = M./C
Run Code Online (Sandbox Code Playgroud)

而C有以下形式:

C = [ 1 1 1 ; 2 2 2 ; 3 3 3 ];
Run Code Online (Sandbox Code Playgroud)

编辑:

result = bsxfun(@rdivide, M, [1 2 3]'); % untested !
Run Code Online (Sandbox Code Playgroud)

  • 第一个基本上是`M ./ repmat(C,1,3)`.另一个解决方案是:'M ./(C*ones(1,3))`,虽然我更喜欢使用BSXFUN. (3认同)