乘以不均匀长度的向量并对结果求和

时间:2017-04-19 11:21:33

标签: arrays matlab sum

我怎样才能为矢量的每个元素计算另一个矢量中的几个元素?

例如,x=[1,2]y=[1,2,3,4]然后我需要将x的每个元素与y的所有元素相乘和相加,就像这样;

x = [1,2]
y = [1,2,3,4]
z = [x1*y,x2*y] = [x1*y1+x1*y2+x1*y3+x1*y4,x2*y1+x2*y2+x2*y3+x2*y4]

矢量可以有无限的元素。

2 个答案:

答案 0 :(得分:1)

x = randi(10,3,1);
y = randi(10,4,1);

tmp = bsxfun(@times,x.',y); % Pre-R2016b
% tmp = x.'*y; % Post R2016b method
out = sum(tmp(:));

可以使用bsxfun或隐式扩展来创建numel(x) * numel(y)大小的矩阵,然后对展平的数组求和以获得最终结果。

答案 1 :(得分:0)

您可以将x乘以y

的总和
result = x * sum(y)