2014-09-26 46 views
1

有没有一些好方法可以做到以下几点。Matlab:如何乘以两个较大向量的子向量?

我有2个向量,我只想做子矢量乘法。对于实施例,

a = 1:6; b = (1:6)' 

然后我想的结果:

result = [1*1+2*2+3*3; 4*4+5*5+6*6] = [14; 77] 

所以,我想乘3元件的每个子向量与每个其他。最后,向量result的最后一个元素,然后将之和或a*b

结果预先感谢您的帮助

回答

2

这可以作为

sum(reshape(a,3,[]).*reshape(b,3,[])).' 

dot(reshape(a,3,[]),reshape(b,3,[])).' 
+0

认为'重塑(A,3,[])'因为问题说' “3元素的子载体” 会更有意义'。 – Divakar 2014-09-26 16:30:37

+0

@Divakar好主意。我读得太快了。谢谢! – 2014-09-26 16:57:28

+0

@Luis Mendo和@Divakar:谢谢!那正是我所期待的。这两个向量具有可变的大小并且与子向量的大小相同。 作为一个说明,你是第一个看到'。''而不是'''做转置的时候:-) – etyM 2014-09-27 15:50:59

2

也许我失去了一些东西,但不是那么简单:

>> [a(1:3)*b(1:3) a(4:6)*b(4:6)] 
ans = 

    14 77 

?? ??