矩阵乘法 - Matlab

时间:2015-12-13 20:58:16

标签: matlab matrix multiplication

第一个向量(M)有96个元素,第二个向量(L)有24个。第一个是每15mn个信息,第二个是每小时的信息。 我想要的是将M中的前四个元素与L中的第一个元素相乘,最后只得到一个含有96个元素的向量,就像这样 -

enter image description here

有没有一种简单的方法可以做到这一点,而不会使代码过于复杂?

3 个答案:

答案 0 :(得分:6)

您正在寻找broadcasting,所以让bsxfun帮助您 -

reshape(bsxfun(@times,reshape(M,4,[]),L(:).'),1,[])

答案 1 :(得分:4)

使用return函数可以轻松生成kron的索引,它会创建[1,1,1,1,2,2,2,2 ....]

L

如果你无法理解L(kron(1:numel(L),ones(1,4))).*M ,使用ceil可以实现同样的目的:

kron

答案 2 :(得分:0)

你可以重塑阵列,

a = [2,4,6,8];
b = 1:16;
c = repmat(a,4,1);
d = reshape(a,1,4*length(a));
e = b.*d;

请注意,如果您需要oneliner,可以将这些组合起来

b.*reshape(repmat(a,4,1), 1, 4*length(a));

我不能说这是否比其他选项更快,但它不应该是一个非常大的差异。如果您认为它更全面,请选择此项。