# Doppler simulator

**URL:** <https://www.ruby-forum.com/t/doppler-simulator/233528>\
**Category:** GNU Radio\
**Created:** [December 22, 2014, 10:15am UTC](https://www.ruby-forum.com/t/doppler-simulator/233528 "2014-12-22T10:15:48Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [December 22, 2014, 10:15am UTC](https://www.ruby-forum.com/t/doppler-simulator/233528/1 "2014-12-22T10:15:48Z")

</div>

* * *

Discuss-gnuradio mailing list  
removed\_email\_address@domain.invalid  
[https://lists.gnu.org/mailman/listinfo/discuss-gnuradio](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)

---

<div class="post-metadata">

**Author:** ![Saul\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/8e8cbc/32.png) [@Saul\_E](https://www.ruby-forum.com/u/Saul_E)\
**Post date:** [December 22, 2014, 10:28am UTC](https://www.ruby-forum.com/t/doppler-simulator/233528/2 "2014-12-22T10:28:11Z")

</div>

Hi Saul,

a doppler shift is, mathematically speaking, nothing more than a  
multiplication with a complex sine, so use a multiply block and a signal  
source per simulated sattelite.

Now, you might want to update your doppler shift according to a  
simulated sattelite’s position. I recommend having a look at PyEphem[1],  
which offers you calculational routines for such things, and writing  
your own python block[2] to generate the complex sine.

Greetings,  
Marcus

[1] [PyEphem Home Page — PyEphem home page](http://rhodesmill.org/pyephem/)  
[2] [http://gnuradio.org/redmine/projects/gnuradio/wiki/Guided\_Tutorials](http://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorials)  
; go through tutorials 1, 2, 3

---

<div class="post-metadata">

**Author:** ![Saul\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/8e8cbc/32.png) [@Saul\_E](https://www.ruby-forum.com/u/Saul_E)\
**Post date:** [December 22, 2014, 10:46am UTC](https://www.ruby-forum.com/t/doppler-simulator/233528/3 "2014-12-22T10:46:44Z")

</div>

* * *

Discuss-gnuradio mailing list  
removed\_email\_address@domain.invalid  
[https://lists.gnu.org/mailman/listinfo/discuss-gnuradio](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)

---

<div class="post-metadata">

**Author:** ![Saul\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/8e8cbc/32.png) [@Saul\_E](https://www.ruby-forum.com/u/Saul_E)\
**Post date:** [December 22, 2014, 11:48am UTC](https://www.ruby-forum.com/t/doppler-simulator/233528/4 "2014-12-22T11:48:02Z")

</div>

Yes and no: the shifting is done right; however, you should make sure to  
use a consistent sampling rate throughout the block.  
The USRP sink interprets the samples that come into it as having a  
sample rate of 5MS/s, whereas the nominal sampling rate in the signal  
sources is set to 2MS/s.

---

<div class="post-metadata">

**Author:** ![Saul\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/8e8cbc/32.png) [@Saul\_E](https://www.ruby-forum.com/u/Saul_E)\
**Post date:** [December 22, 2014, 11:53am UTC](https://www.ruby-forum.com/t/doppler-simulator/233528/5 "2014-12-22T11:53:36Z")

</div>

* * *

Discuss-gnuradio mailing list  
removed\_email\_address@domain.invalid  
[https://lists.gnu.org/mailman/listinfo/discuss-gnuradio](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)

---

<div class="post-metadata">

**Author:** ![Saul\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/8e8cbc/32.png) [@Saul\_E](https://www.ruby-forum.com/u/Saul_E)\
**Post date:** [December 22, 2014, 1:24pm UTC](https://www.ruby-forum.com/t/doppler-simulator/233528/6 "2014-12-22T13:24:02Z")

</div>

Yes and no. The signal source just uses the information “sampling rate”  
to calculate the length of one period in samples. Other than that,  
nothing in GNU radio cares about sampling rate - that’s a real world  
concept that only applies to real world devices (such as the USRP sink)  
but not to the digital signal processing. You should make sure to use  
the same nominal sampling rate that you used to generate the files with  
the signal in. For example, if you calculated the satellite signal based  
on a nominal rate of 1MS/s, and play it back at 5MS/s, everything will  
be frequency scaled with a factor of five.  
Greetings,  
Marcus
