如果我有以下矩阵:
a=[10 1 0 1 1
50 1 0 0 0
60 0 0 0 1]
如何将矩阵[10 50 60]'中的第一列乘以向量乘法到矩阵的其余部分并得到以下结果:
b=[10 10 0 10 10
50 50 0 0 0
60 0 0 0 60]
答案 0 :(得分:5)
为此,bsxfun
就是您所需要的:
b = [a(:,1) bsxfun(@times,a(:,2:end),a(:,1))]
希望这有帮助,
一个。
答案 1 :(得分:3)
如果你真的想把它框架化为矩阵乘法,比如:
b = [a(:,1), diag(a(:,1))*a(:,2:end)]
应该可以工作(因为我已经做了任何matlab,但是已经有一段时间了。)
答案 2 :(得分:2)
firstcol = a(:,1);
b = [firstcol, a(:,2:end) .* repmat(firstcol,1,size(a,2)-1)];
(这实际上不是我们通常称之为矢量乘法或矩阵乘法的东西。)