2

我试图简化我的代码,我遇到了一个小问题。让

v  = [1; 2; 3];
a1 = [4; 5; 6];
a2 = [7; 8; 9];
A  = [a1, a2];

我的目标是计算

u = [v.*a1, v.*a2]

只使用v一次。这可能吗?

4

1 回答 1

7

是的,您可以使用 来执行此操作bsxfun,例如:

u = bsxfun(@times,A,v);

或者也通过使用repmat

u= repmat(v,[1 2]).*A;

或者也通过使用kron

u= kron(v,[1 1]).*A;

或者最后,只使用矩阵乘法:

u = v*[1 1].*A;

我敢肯定还有更多的方法,但我会停在这里......

于 2013-01-26T00:43:55.213 回答