MATLAB中的矩阵运算

Dou*_*ubt 2 matlab matrix vectorization

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

v  = [1; 2; 3];
a1 = [4; 5; 6];
a2 = [7; 8; 9];
A  = [a1, a2];
Run Code Online (Sandbox Code Playgroud)

我的目标是计算

u = [v.*a1, v.*a2]
Run Code Online (Sandbox Code Playgroud)

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

bla*_*bla 7

是的,您可以使用bsxfun,例如:

u = bsxfun(@times,A,v);
Run Code Online (Sandbox Code Playgroud)

或者也可以使用 repmat

u= repmat(v,[1 2]).*A;
Run Code Online (Sandbox Code Playgroud)

或者也可以使用 kron

u= kron(v,[1 1]).*A;
Run Code Online (Sandbox Code Playgroud)

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

u = v*[1 1].*A;
Run Code Online (Sandbox Code Playgroud)

我相信还有更多的方法,但我会在这里停下来......