Can my code be written like this?

2 次查看(过去 30 天)
yang-En Hsiao
yang-En Hsiao 2019-1-31
编辑: Jan 2019-1-31
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 个评论
Jan
Jan 2019-1-31
编辑:Jan 2019-1-31
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 2019-1-31
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

请先登录,再进行评论。

回答(1 个)

Jan
Jan 2019-1-31
编辑:Jan 2019-1-31
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 个评论
yang-En Hsiao
yang-En Hsiao 2019-1-31
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 2019-1-31
编辑:Jan 2019-1-31
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.

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by