MATLAB Answers

Double sum with upper limits

1 view (last 30 days)
Hi
I am trying to do the following calululation in matlab:
But I do not how how to do the two sums in the front. Our data (d) is a 67x120 array.
Any suggestions would be appreciated :)

  2 Comments

Luna
Luna on 2 Mar 2020
What have you done so far as coding? And what is d?

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 2 Mar 2020
Edited: Guillaume on 2 Mar 2020
s = (1:size(d, 1)).';
result = sum(sum(d .* cos(s))) / sum(cos(s));
Loops not needed, they're just a waste of time.

  3 Comments

Luna
Luna on 2 Mar 2020
My understanding of /Sigma[cos(s)] part, it should be divided into sum of cos(s) from 1 to what s is until that iteration. For example if s is 20 while j = 3;
d(20,3)*cos(20) / ( cos(1)+cos(2)+...+cos(20) )
so your result gives a vector (1x67). I assume that result must be a scalar.
Guillaume
Guillaume on 2 Mar 2020
Yes, I made a mistake, there was a sum missing in the denominator. I assumed that the could be taken out of the double sum, i.e. it's over the whole range. It's not clear and we didn't get an answer to Darova's question. So, my code implement:
If it's a partial sum as you think, then:
s = (1:size(d, 1)).';
result = sum(sum(d .* cos(s) ./ cumsum(cos(s))));
which implements
Luna
Luna on 3 Mar 2020
You are right.

Sign in to comment.

More Answers (1)

Luna
Luna on 2 Mar 2020
Maybe something like that would help:
d = rand(67,120);
sum_of_cos_s = 0;
result = 0;
for s = 1:67
for j = 1:120
sum_of_cos_s = sum_of_cos_s+cos(s);
result = result + (d(s,j)*cos(s))/sum_of_cos_s;
end
end

  0 Comments

Sign in to comment.

Sign in to answer this question.

Tags

Products