|
From: | Kelvin Augustin |
Subject: | Re: [Discuss-gnuradio] how does Doppler shift increment in flat fading channel GNU radio |
Date: | Tue, 23 Feb 2016 11:35:42 +0100 |
The Doppler Frequency per sinusoid is distributed according to that U-shaped thing you see everywhere.Now, instead of rolling the dice once during initialisation and sticking to that Doppler frequency forever, this implementation is doing something like a random walk through the Doppler Spectrum.alpha_n is going back and forth between -pi and pi (plus some initial phase offset), so fDTs * cos(alpha_n), the normalised Doppler Frequency, follows this U-distribution.
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.
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,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
#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
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
[Prev in Thread] | Current Thread | [Next in Thread] |