Can my code be written like this?

1 view (last 30 days)
yang-En Hsiao
yang-En Hsiao on 31 Jan 2019
Edited: Jan on 31 Jan 2019
i want to write this formula as code in matlab,but i am not very sure that is my code right.
The range of j and k are both 1~K
for k= 1:K
for j=1:K
if k==j
a=mu(k).*( abs(h_(k)'*f_(k)^2 ) / hat_r(k);
else
b=mu(k).*( abs(h_(k)'*f_(j)^2 );
end
end
total=a+b;
end
  5 Comments
Jan
Jan on 31 Jan 2019
Edited: Jan on 31 Jan 2019
Neither the elementwise .* does not matter, when you work with scalars. Using conj looks less confusing than using the transposition.
In abs(h_(k)'*f_(k)^2) you are squaring f only. Use this instead:
abs(conj(h_(k)) * f_(k))^2
yang-En Hsiao
yang-En Hsiao on 31 Jan 2019
K_k means that the range of j is the same as k,that is 1 ~K.but j can't not be equal to k

Sign in to comment.

Answers (1)

Jan
Jan on 31 Jan 2019
Edited: Jan on 31 Jan 2019
There is no "hat_r(k)" in your formula. A trailing parenthesis is missing also.
total = 0;
hc = conj(h_);
for k = 1:K
c1 = ;
sumj = 0;
for j = 1:K
if j ~= k % [EDITED]
sumj = sumj + abs(hc(k) * f_(j)) ^ 2;
end
end
total = total + mu(k) * (abs(hc(k) * f_(k)) ^ 2 - sumj) / r_hat(k);
end
  2 Comments
yang-En Hsiao
yang-En Hsiao on 31 Jan 2019
it should be bar_r(k).there is a bar_r(k) ,1.,in the picture.
and the 2 means that the range of j is the same as k,that is 1 ~K.but j can't not be equal to k
不等於.PNG
Jan
Jan on 31 Jan 2019
Edited: Jan on 31 Jan 2019
If "it" should be "bar_r(k)", than simply insert this in my code. You do not have to wait until I do it. By the way, the character is a greek "gamma", not an "r". But names do not matter.
There is still a missing closing parenthesis. Please post a valid formula. A smaller zoom-level would be nice.

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!