Lord Rayleigh called, he wants his fading model in GNU Radio
In all seriousness, has anyone implemented the Rayleigh fading model in
GNU Radio and just not released it? It’s kind of a shot in the dark,
but from reading the list people seem to do extensive work in GNU Radio
and not contribute it back to the project. I’m hoping this might be one
of those cases.
If not, anyone interested in possibly tackling it with me? Caveat: my
EE knowledge is low but growing. Benefit: my understanding of GNU Radio
conventions is high … or so I like to think!
In terms of variables in the system, it would be beneficial to specify
the multipath time (time between received impulses), and the number of
impulses. This allows the end user to vary the severity.
Well, if anyone is interested in hopping in the boat, let me know and we
can discuss it. I know it is by no means a trivial task, which is why
I’m asking for help, but the benefits of such a model in the project in
my opinion would be great.
There is a standalone, offline HF channel simulator in C for Linux,
available through http://www.johanforrer.net/SIMULR/. The code is GPL 2.
It
might give a head start to anybody developing a gnuradio block.
73
Frank
AB2KT
Hi Richard,
This would be great! I have great use for this, and I’m sure many
others would too. Did he generate any documentation showing his
evaluation of his implementation, and any details of it? (like a final
research paper).
Could you make this code publicly available to the list so that we can
review its implementation and discuss integrating it in to the code
base? We could work on integrating the multiple paths in to the C++
block and making it flexible.
If you host it for us, it won’t undergo just one set of eyes, but many
sets of eyes on the list But make sure to link to it, rather than
send an attachment because of list restrictions. Then we can put it in
a features branch within the SVN repository to work on it if needed.
Thank you!
George
Hi George,
I have had a Summer student doing some work on this (a year ago now). He
implemented a GNU Radio module that can do Rayleigh channel simulation.
He based it on a particular paper (I’d have to look it up) for the
implementation. He verified the statistical performance of his
implementation against the Matlab Rayleigh channel model and against
theory and found it to be a close match. I’m not entirely convinced of
the delayed multiple path aspects of the design/implementation but
haven’t had time to look into it further. In fact as it stands I believe
the GNU Radio module (at C++ level) only handles a single flat fading
path and doing multiple delayed paths is done at the python module level
and which invokes multiple instances of the Flat fading Rayleigh C++ GNU
Radio module.
I’d welcome another set of eyes and someone more experienced than I am
with GNU Radio to help finish off this potentially very useful addition
to the GNU Radio code base.
Cheers
Richard
Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page
=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
Richard C. wrote:
believe the GNU Radio module (at C++ level) only handles a single flat
fading path and doing multiple delayed paths is done at the python
module level and which invokes multiple instances of the Flat fading
Rayleigh C++ GNU Radio module.
I’d welcome another set of eyes and someone more experienced than I am
with GNU Radio to help finish off this potentially very useful
addition to the GNU Radio code base.
Cheers
Richard
Richard,
That sounds great; please let us contribute it. We have a basic channel
model in Python that implements an AWGN channel, but has a filter, which
you can set the taps to do fading. It’d be nice if we could enhance this
to implement a Rayleigh, and even Rician channel (Nakagami, too, for
those of you who really care about this stuff).
Sounds like your student did some version of Jakes’ model. At least,
that’s where I’d start. I have this in Matlab from an old class project
that I was going to see about resurrecting, but it’d be great to have it
already implemented in GNU Radio.
Thanks!
Tom
I’ve established a temporary (60 day) FTP user account on our company
FTP server to host the GNU Radio Rayleigh Fading code as it currently
stands. I’ve placed the raw code that’s relevant to this module there.
It’s not immediately ready to build however that won’t take long for
anyone familiar with integrating user modules into GNU Radio. There is
some other code relevant to the way we were intending to use the fading
simulator (i.e in a client/server model across a network) that may be of
interest to some but is not particularly relevant to the actual fading
module itself so you can ignore that if you wish.
FTP details: ftp://ftp.tait.co.nz
user: gnuradio
password: gnuradio01
The top level python files ‘filesrc_fade_transmit.py’ and
‘nbfm_tx_rx.py’ are examples of how the fading module might be used.
The file ‘multipath_rayleigh_channel_cc.py’ is the python level module
I mentioned earlier that handles doing multiple delayed paths, hopefully
independently faded, but thats something that can be double checked.
Anyway, feel free to grab the code and have a rummage through to
familiarise yourself. If you have any questions or problems accessing
the files let me know. I’ll do my best to help however bear in mind I
haven’t worked on this directly myself. It was done as part of a summer
internship a year or so ago and I’m only now getting around to trying to
use it. I can however get in touch with the student (Jonas Hodel) if
required.
I will be on leave for a week from this Friday (NZ time) but will be
back online Monday 11th Feb.
Good luck!
Cheers
Richard
George N. wrote:
block and making it flexible.
Richard C. wrote:
In fact as it stands I believe the GNU Radio module (at C++ level)
addressee. It is subject to copyright, is confidential and may be
=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
Richard C. wrote:
FTP details: ftp://ftp.tait.co.nz
user: gnuradio
password: gnuradio01
Hi Richard (and all),
Did anybody grab this code before the temporary FTP user account
terminated? I did a while back but have since lost it. If someone has
it, can they register an account at CGRAN and upload it? All it entails
is registering an account and adding the files to an SVN repository.
(https://www.cgran.org)
I can worry about the project creation if no one else has time, but I
think this code would be valuable.
Thanks!
George
OK, I’ll look at gathering up all relevant code and documentation and
see what hosting options I have at this end. When I’ve got this sorted
I’ll post a link to the location of the files. In the meantime a little
additional detail, taken from some of the comments in one of the header
files.
It will be great to progress this module such that multiple delayed
paths can be implemented at the C++ level without requiring python to
handle the delays.
------------------------------------------------------------------
/
This class implements a flat Rayleigh Fading Simulator based on Christos
Komninakis work referred to in his paper “A Fast and Accurate Rayleigh
Fading Simulator” (http://www.ee.ucla.edu/~chkomn/). Some analysis has
been carried out by myself confirming that his algorithm is similar to
the Rayleigh model available within Matlab “rayleighchan()”.
Inputs
- seed: the random channel seed (e.g. -115).
- fdT: Discrete Doppler Rate (small positive fraction, e.g. 0.001 -
0.2), where fd is the Doppler fade frequency and 1/T is the sample rate
of the channel. Note that the current implementation only supports
rational fractions of 0.2. To accommodate other values the IIR filter
needs to re-designed using Matlab (please reefer to the paper mentioned
above for details).
- pwr: the square root power of the resulting fading waveform (e.g. pwr
= 5 would produce a fading waveform with an output power of 25).
- flag_indep: Determines whether individual blocks processed by the
channel should be treated as independent blocks or as one continuous
block. 1 if blocks are independent, 0 if continuous across blocks.
Jonas Hodel
01/02/07
*/
*---------------------------------------------------------------
Cheers
Richard
(Please note: I have no control over the signature attached to the
bottom of this email, sorry!
George N. wrote:
block and making it flexible.
Richard C. wrote:
In fact as it stands I believe the GNU Radio module (at C++ level)
addressee. It is subject to copyright, is confidential and may be
=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
Hi George,
that code is still available if you’d like me to FTP host it again.
Cheers
Richard
George N. wrote:
relevant to the actual fading module itself so you can ignore that if
terminated? I did a while back but have since lost it. If someone
has it, can they register an account at CGRAN and upload it? All it
entails is registering an account and adding the files to an SVN
repository. (https://www.cgran.org)
I can worry about the project creation if no one else has time, but I
think this code would be valuable.
Thanks!
George
=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
Hi Richard,
Definitely, that would be great. I would like to put it in CGRAN.
(https://www.cgran.org)
Is there any progress on this attempt?
I can’t find any fading model in python.
–
View this message in context:
http://gnuradio.4.n7.nabble.com/anyone-implement-the-Raleigh-fading-model-multi-path-tp23782p42327.html
Sent from the GnuRadio mailing list archive at Nabble.com.
There are currently two fading model blocks that are usable in 3.7
both should show up in GRC - or from python you can use:
the flat fading model:
channels.fading_model( 8, 10.0/samp_rate, False, 4.0, 0 )
where args are {# sinusoids, fDTs, los_component, rician_factor,
prng_seed }
and a simple frequency selective fading model combining N flat fading
channels of a fixed PDP:
channels.selective_fading_model( 8, 10.0/samp_rate, False, 4.0, 0,
(0.0,0.1,1.3), (1,0.99,0.97), 8 )
where args are {# sinusois, fDTs, los_component, rician_factor,
prng_seed, power_delay_profile_delays_samples,
power_delay_profile_amplitudes, max_channel_taps}
-Tim