how should I cal. the sum of all the combinations?
1 view (last 30 days)
Show older comments
Dear All, For one vector A=(a1, a2, ...a3000). I want to calculate the sum(ai * aj^2) where i,j are different indices, i not equal to j. If I use the co_vol function it costs too much time to run the code. So I am thinking, is there a formula exisiting to calculate this sum? Like the case I showed under the "%%%%%%%%" line below, for the sum(ai * aj* ak) case. (where i j k are different from each other)
Thanks a lot in advance
function co_vol=co_vol(in)
in=in; N=length(in);
% aa=zeros(N^2,1); aae=[];
parfor i=1:N for j=1:N if j~=i ae=in(i)*in(j)^2; else ae=0; end
aae =[aae ae];
end
end
co_vol=sum(aae); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 I am calculating the sum(ai * aj * ak) where i,j,k are different indices. based on this formula: (sum(A)^3-3*sum(A.^2)*sum(A)+2*sum(A.^3))
instead of the code below. This saves me a lot of computation time. function co_cov=co_cov(in)
in=in; N=length(in);
aae=[];
parfor i=1:N
for j=1:N
for k=1:N
if (i~=j)&&(i~=k)&&(j~=k)
ae=in(i)*in(j)*in(k);
else
ae=0;
end
aae=[aae ae];
end
end
end
co_cov=sum(aae ); end
0 Comments
Answers (0)
See Also
Categories
Find more on Search Path in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!