如何按元素将矩阵的列除以向量的元素?

Jak*_*old 3 matlab matrix division

给定一个矩阵和一个向量

A = [ 1 2; 2 4 ];
v = [ 2 4 ];
Run Code Online (Sandbox Code Playgroud)

如何将矩阵的每一列除以向量的相应元素?下面的矩阵应该是

[ 1/2 2/4; 2/2 4/4 ]
Run Code Online (Sandbox Code Playgroud)

基本上我想应用按列运算,每列的操作数存储在单独的向量中。

jdo*_*rie 5

rdivide您应该使用和的组合bsxfun

A = [ 1 2; 2 4 ];
v = [ 2 4 ];
B = bsxfun(@rdivide, A, v);
Run Code Online (Sandbox Code Playgroud)

rdivide负责每个元素的划分,同时bsxfun确保尺寸相加。你可以通过类似的方法达到相同的结果

B = A ./ repmat(v, size(A,1), 1)
Run Code Online (Sandbox Code Playgroud)

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