Monday, February 22, 2016

[Discuss-gnuradio] how does Doppler shift increment in flat fading channel GNU radio

Hello,

The question is about how does the given Doppler shift progress, or how is the Doppler induced phase shift implemented.

I select a simple frequency selective fading block and feed in it some gr_complex(1, 0) values. For simplicity I run one fader (num of sinusoids).
in file:
https://github.com/osh/gnuradio.old/blob/master/gr-channels/lib/flat_fader_impl.cc 
in the code below,
#elif FASTSINCOS == 2
 float s_i = scale_sin*d_table.cos(2*M_PI*d_fDTs*d_m*d_table.cos(alpha_n)+d_psi[n+1]);
 float s_q = scale_sin*d_table.cos(2*M_PI*d_fDTs*d_m*d_table.sin(alpha_n)+d_phi[n+1]);
  
 #else
 d_m shows that the Doppler shift must progress sequencially. However, the value of "2*M_PI*d_fDTs*d_m*d_table.cos(alpha_n)" as a whole, produces floating point numbers which results in kind of random values out of d_table.cos() function in file
https://github.com/osh/gnuradio.old/blob/master/gr-channels/lib/sincostable.h


Some more explanation:
the value: 2*M_PI*d_fDTs*d_m*d_table.cos(alpha_n) gets in as x below (in file .../lib/sincostable.h)
(((int)(x*d_scale)) + d_sz) % d_sz; - this is a random integer value (may be not, can you please help me with that?)
therefore it returns a random cos value as: return d_cos[idx];

The issue arises when that floating point values inside cos() function is converted to integers as given above.

Now, my question is, did you do that random phase shift/Doppler shift on purpose? If yes, what is the reasoning behind that.
As far as I know, the Doppler shift should be somehow linear progressive.

--
NE

No comments:

Post a Comment