Bug 1140

Summary: Possible error on the Jakes Model
Product: ns-3 Reporter: Cho Wonjoon <chowj>
Component: propagationAssignee: Kirill Andreev <andreev>
Status: RESOLVED FIXED    
Severity: normal CC: ns-bugs, ruben, tomh
Priority: P5    
Version: pre-release   
Hardware: PC   
OS: All   

Description Cho Wonjoon 2011-05-12 02:26:02 UTC
(first, we are not good at writing in English. Please consider this. Thank you)

We have looked at the variable k in the code
double JakesPropagationLossModel::PathCoefficients::GetLoss (void)
to find the Jakes Model equation.
  
Comparing with the Jakes Model in the books and papers, we figured out that the Jakes model described in the code is different from original model.

In the papers, the Jakes model T(t) needs to satisfy
E(TT*) = 1 (T* means complex conjugate of T)

Based on this, and also based on the parameters described in the NS-3 code, we concluded that the variable k doesn't satisfy E(TT*) = 1

We think that, based on the model in the papers, the variable k needs to be changed by k * (m_nOscillators + (1/sqrt(2))) * 2 * sqrt(2 / N) in order to satisfy E(TT*) = 1
(N, m_nOscillators are in the source code)



We thought that the variable k is equivalent to the Jakes model T(t), but let us know if that is not true or other context above is wrong or misunderstood. We hope to get a quick and positive response. Thank you for reading.
Comment 1 Ruben Merz 2011-05-12 04:19:49 UTC
Thanks for this report

While I know that there are references in the source code, can you nevertheless indicate to which book and which equations you are referring to? This is to avoid any ambiguity.

Ruben
Comment 2 Cho Wonjoon 2011-05-18 22:18:45 UTC
(In reply to comment #1)
> Thanks for this report
> 
> While I know that there are references in the source code, can you nevertheless
> indicate to which book and which equations you are referring to? This is to
> avoid any ambiguity.
> 
> Ruben

I didn't know there was the reply system in Bugzilla because it was first time using this.. Again sorry for the inconvenience. I'll write down my e-mail context below


Thank you for the response.
We referred from the paper below,

Jakes fading model revisited
P Dent, GE Bottomley… - Electronics Letters, 1993 - ieeexplore.ieee.org

In this paper, they says that the equation
E(T(t)T*(t)) = 1
needs to be satisfied while the variable k (which corresponds to T(t))in the source code doesn’t.
We changed the source code and made the variable k to satisfy that equation.

I'll describe the modified source code below,

In the function

JakesPropagationLossModel::PathCoefficients::GetLoss (void),

There is a code 

double k = sqrt(pow(coef.real, 2)+pow(coef.imag,2)) / norm; 

If the value of variable 'norm' is sqrt(2) (constant), or simply if you change to 
double k = sqrt(pow(coef.real, 2)+pow(coef.imag,2)) / sqrt(2); 

Then the variable k satisfies that equation Sorry for the ambiguity. 
I hope this mail help you to determine that 'bug' is right or wrong.
Thank you.
Comment 3 Ruben Merz 2011-05-20 11:07:07 UTC
Thanks. I'm on it. Do you have some test code btw?
Ruben
Comment 4 Cho Wonjoon 2011-05-22 10:25:24 UTC
(In reply to comment #3)
> Thanks. I'm on it. Do you have some test code btw?
> Ruben

I couldn't understand what the 'test code' means..
We just changed the code which I said before, and run with constant transmit power and derived E(TT*).

I hope to get a positive response from you. Thank you for looking on that bug.
Comment 5 Kirill Andreev 2012-05-21 11:25:36 UTC
changeset:   8786:8f366d5eee06
user:        Kirill Andreev <andreev@telum.ru>
date:        Mon May 21 19:15:32 2012 +0400
summary:     Bug 1140: fixed. New Jakes model has been implemented.