如何按向量的元素划分矩阵的列,按元素划分?

时间:2015-07-13 23:03:47

标签: matlab matrix division

给定矩阵和向量

A = [ 1 2; 2 4 ];
v = [ 2 4 ];

如何通过向量的相应元素划分矩阵的每一列?以下矩阵应为

[ 1/2 2/4; 2/2 4/4 ]

基本上我想应用一个逐列操作,每个列的操作数存储在一个单独的向量中。

2 个答案:

答案 0 :(得分:4)

您应该使用rdividebsxfun的组合:

A = [ 1 2; 2 4 ];
v = [ 2 4 ];
B = bsxfun(@rdivide, A, v);

rdivide负责每个元素的划分,而bsxfun则确保尺寸加起来。您可以通过类似

的方式获得相同的结果
B = A ./ repmat(v, size(A,1), 1)

但是,使用repmat会导致内存使用量增加,这就是bsxfun解决方案更可取的原因。

答案 1 :(得分:2)

使用bsxfun使用右分隔(rdivide)运算符并利用广播:

>> A = [ 1 2; 2 4 ];
>> v = [ 2 4 ];
>> out = bsxfun(@rdivide, A, v)

out =

    0.5000    0.5000
    1.0000    1.0000

bsxfun的美感在于,在这种情况下,v的值将被复制为A中的行数,并且它将执行元素明智的划分使用此临时复制矩阵,其值为A