如何在Matlab中执行这种矩阵划分?

rob*_*ess 2 matlab linear-algebra

这个问题可能与Matlab关系不大,而与矩阵代数有关(我大多数时候忘记了我的大学课程).说我有一个m x n矩阵X和一个m x 1矩阵B.如何将划分X通过B使得所有元素iX的第i行被分段由分割iB的第i行,从而导致另一个m x n矩阵Y

例如

X = [2 4 8; 3 9 27; 4 16 64]
B = [2; 3; 4]

X ? B = [2/2 4/2 8/2; 3/3 9/3 27/3; 4/4 16/4 64/4]
ans   = 
           1     2     4
           1     3     9
           1     4    16
Run Code Online (Sandbox Code Playgroud)

ang*_*nor 11

最好不要使用repmat- 它很慢并为工作区分配额外的内存.您可以使用bsxfun,这是一个内置函数,因此它更快,并避免额外的工作区:

X = [2 4 8; 3 9 27; 4 16 64]
B = [2; 3; 4]
bsxfun(@rdivide, X, B)

ans =

 1     2     4
 1     3     9
 1     4    16
Run Code Online (Sandbox Code Playgroud)