【发布时间】:2014-09-27 00:57:07
【问题描述】:
有没有什么好方法来做跟随。
我有 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 的总和或结果
提前感谢您的帮助
【问题讨论】:
标签: 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 的总和或结果
提前感谢您的帮助
【问题讨论】:
标签: matlab
可以这样做
sum(reshape(a,3,[]).*reshape(b,3,[])).'
或
dot(reshape(a,3,[]),reshape(b,3,[])).'
【讨论】:
reshape(a,3,[]) 会更有意义,因为问题是"sub vectors of 3 element"。
.' 而不是' 的第一个:-)
' 是 共轭 转置。关于.' 与',请参阅this very interesting Q&A
'。但是,如果使用 .' 可以提高性能,我不会这样做,因为 flops 是免费的 :-)
也许我遗漏了一些东西,但不是那么简单:
>> [a(1:3)*b(1:3) a(4:6)*b(4:6)]
ans =
14 77
??
【讨论】: