discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] how does Doppler shift increment in flat fading c


From: Bastian Bloessl
Subject: Re: [Discuss-gnuradio] how does Doppler shift increment in flat fading channel GNU radio
Date: Tue, 23 Feb 2016 08:35:18 -0800


On 23 Feb 2016, at 02:35, Kelvin Augustin <address@hidden> wrote:

Hi Bastian

What I don’t get (and what I asked in the other thread) is why this is multiplied with d_m. I think that, per sample, the current Doppler Frequency should be used to calculate an incremental angle to the previous value.

To answer this, I would consider of the correspondence (via a Fourier Transform) of a Doppler shift in the time domain; A shift in frequency corresponds to a "time" dependant phase shift in the time domain. Thus a Doppler shift of Fd in the time domain corresponds to exp(j*2*pi*Fd*t). And since Dynamic channel model(flat_fader to be precise) in GNURadio models the Doppler in the time domain, the d_m could be a way to model the time. 

Yes, I understand that d_m is like time here, and it would be perfectly fine if fD would stay constant during the whole simulation.

But as fD changes over time, the phase change from one sample to another (due to the same change in dopplers shift) will be amplified over time. AFAIS, this changes the autocorrelation properties over time.

I would have expected something like

tap[n+1] = tap[n] exp(2*pi*i*fD*cos(alpha))

Best,
Bastian


I would also ask a supplementing question that I am having problems understanding. I would expect the Doppler shift to be modelled by a complex exponential(cos[2*pi*Fd*t*cos(alpha)] + i sin [2*pi*Fd*t*cos(alpha)]) which corroborates what we know from the Fourier correspondence of a Doppler shift. Why then, in the Dynamic channel model in GNURadio (flat_fader to be precise), the Doppler is modelled by (cos[2*pi*Fd*t*cos(alpha)] + i cos [2*pi*Fd*t*sin(alpha)]) ?? I.e why is the imaginary part a cos ? Any hints?
 


On 22 Feb 2016, at 06:41, Nasi <address@hidden> wrote:

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
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




-- 
Ph.D. scholar: Kelvin Chelli
OFDM based wireless systems
Telecommunications Lab, Uni Saarland
Campus C6 3, Room  10.07
66123 Saarbrücken, Germany.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]