brook77 发表于 2008-1-20 16:21

如何对多个数组相乘并求和

比如有一数组X=1:1:10
又有一函数A(i), i=1:1:n

我想求 A(1)*X+A(2)*X+....+A(n)*X, 当n很大时,应该用什么函数编程计算呢
用sum(A(i).*X)总是错误

求高手指点一下

[ 本帖最后由 eight 于 2008-1-22 20:31 编辑 ]

sigma665 发表于 2008-1-20 16:52

回复 楼主 的帖子

sum(A(i).*X)
是不是应该sum(A(i).*X(i))

brook77 发表于 2008-1-20 18:59

原帖由 sigma665 于 2008-1-20 16:52 发表 http://www.chinavib.com/forum/images/common/back.gif
sum(A(i).*X)
是不是应该sum(A(i).*X(i))

但是A(i)和X(i)的维数不相同啊,没法点乘

sigma665 发表于 2008-1-20 19:32

回复 3楼 的帖子

点不要

brook77 发表于 2008-1-20 20:08

点不要,仍有错误的
我知道了,用一个循环语句就行了
s=0;
for i=1:n
s=s+A(i)*X;
end
s

sigma665 发表于 2008-1-20 21:52

回复 5楼 的帖子

你要的s也是一个向量?

allenfieldin 发表于 2009-9-26 08:43

转置就行了,如下:

X=1:10%%1*10向量
A=rand(1,100)   %%产生1*100的一个随机向量
y=sum(sum( A'*X )) %%对矩阵所有元素求和
%%%%求解结果:
y =
      2.4515e+003

尽量避免循环运算

[ 本帖最后由 allenfieldin 于 2009-9-26 09:22 编辑 ]

allenfieldin 发表于 2009-9-26 09:48

*的两个矩阵要求和线性代数里要求一样;.*需要两个矩阵大小相同



sogooda同志是这样说的,呵呵
页: [1]
查看完整版本: 如何对多个数组相乘并求和