2014-09-26 45 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 

?? ??