use*_*766 -4 arrays matlab addition
我正在寻找一种方法,我可以在一个数组中添加元素,使第一个数组的第一个元素添加到第二个数组中的每个元素,然后第一个数组中的第二个元素添加到第二个数组等.最终的矢量将是长度(a)*长度(b)长
例如...
a=[1,2,3,4] b=[5,6,7]
answer =
[(1+5),(1+6),(1+7),(2+5),(2+6),(2+7),(3+5),(3+6),(3+7),(4+5),(4+6),(4+7)]
=[6,7,8,7,8,9,8,9,10,9,10,11]
阅读bsxfun.它对这类事物非常有用(通常比arrayfun或更快for):
result = bsxfun(@plus, a(:).', b(:)); %'// matrix of size numel(b) x numel(a)
result = result(:).'; %'// linearize to a vector
Run Code Online (Sandbox Code Playgroud)
或者,更多的怪胎:kron用产品做你想要的而不是总和.所以:
result = log(kron(exp(a),exp(b)));
Run Code Online (Sandbox Code Playgroud)