# Reed-Muller Codes, Spectral Estimation and clever students

**URL:** <https://www.ruby-forum.com/t/reed-muller-codes-spectral-estimation-and-clever-students/208374>\
**Category:** GNU Radio\
**Created:** [June 16, 2011, 4:50pm UTC](https://www.ruby-forum.com/t/reed-muller-codes-spectral-estimation-and-clever-students/208374 "2011-06-16T16:50:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [June 16, 2011, 4:50pm UTC](https://www.ruby-forum.com/t/reed-muller-codes-spectral-estimation-and-clever-students/208374/1 "2011-06-16T16:50:55Z")

</div>

Hi everyone,

there’s new stuff on our CGRAN repositories you might enjoy.

- Channel Coding Toolbox

We’ve created a new toolbox for channel coding stuff.  
[https://www.cgran.org/wiki/chancoding](https://www.cgran.org/wiki/chancoding)

It includes some simple bit-based channel models (a standard BSC and  
Markov-modeled BC) and generic block interleavers. The most interesting  
part is definitely an implementation of binary Reed-Muller codes. These  
codes have some uses; among others, sub-sets of these codes can be used  
to bound the PAPR of OFDM signals (pre-set code is available).  
One of our students (Nico Otterbach) implemented these codes as part of  
his Bachelor’s degree. A very well-written thesis with a nice  
introduction to RM-codes is in the repository, unfortunately (for most  
of you) it’s in German.

- More Spectral Estimation Codes!

[https://www.cgran.org/wiki/SpecEst](https://www.cgran.org/wiki/SpecEst)

As part of another students project, spectral estimation based on ESPRIT  
and MUSIC is now part of of the Spectral Estimation Toolbox (this means  
we now have more spectral estimators implemented than Matlab does :-).  
I’d like to thank Manuel F. and Moritz Fischer for doing the hard  
coding work.  
This toolbox now has some cool elements: for one, it includes Fortran  
code, which is quite an achievement by itself. Next, Moritz has ported  
the whole thing to CMake. If you’re interested to see how this can work  
for complicated out-of-tree modules, have a peek at the code!

Both projects include Doxygen-generated documentation and GRC bindings  
for most blocks.

Besides announcing this, I’d like to encourage the use of GNU Radio  
stuff for university credits. Obviously, we’ve had a lot of good  
experiences with this, but it’s also a good deal for the students:  
fundamental understanding of signal processing requires implementation  
(at least that’s my opinion), and it is very satisfying to have a  
working, reusable product when finishing such a project.

Cheers,  
MB

–  
Karlsruhe Institute of Technology (KIT)  
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.  
Research Associate

Kaiserstraße 12  
Building 05.01  
76131 Karlsruhe

Phone: +49 721 608-43790  
Fax: +49 721 608-46071  
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and  
National Laboratory of the Helmholtz Association

---

<div class="post-metadata">

**Author:** ![pytlik](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/779978/32.png) [@pytlik](https://www.ruby-forum.com/u/pytlik)\
**Post date:** [June 23, 2011, 2:03am UTC](https://www.ruby-forum.com/t/reed-muller-codes-spectral-estimation-and-clever-students/208374/2 "2011-06-23T02:03:50Z")

</div>

On Thu, Jun 16, 2011 at 9:52 AM, Martin B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Markov-modeled BC) and generic block interleavers. The most interesting
> 
> for complicated out-of-tree modules, have a peek at the code!  
> working, reusable product when finishing such a project.

Martin,  
That is fantastic works! Thanks for putting it out there!

I have a question on the channel coding work done. Was there any  
benchmarking performed on it to test the throughput speed? Also, is  
there  
any SIMD code used to improve the performance? If not, I wonder how  
difficult it might be to use Volk functions for that?

Thanks again!  
Tom

---

<div class="post-metadata">

**Author:** ![pytlik](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/779978/32.png) [@pytlik](https://www.ruby-forum.com/u/pytlik)\
**Post date:** [June 24, 2011, 9:50am UTC](https://www.ruby-forum.com/t/reed-muller-codes-spectral-estimation-and-clever-students/208374/3 "2011-06-24T09:50:52Z")

</div>

On Wed, Jun 22, 2011 at 07:59:40PM -0400, Tom R. wrote:

> Martin,
> 
> That is fantastic works! Thanks for putting it out there!
> 
> I have a question on the channel coding work done. Was there any benchmarking  
> performed on it to test the throughput speed? Also, is there any SIMD code used  
> to improve the performance? If not, I wonder how difficult it might be to use  
> Volk functions for that?
> 
> Thanks again!

Hi Tom and everyone,

some basic benchmarks were done (if your interested in the details, see  
pp59 in the included PDF. You’ll find the specs of the test system  
there. Figure 5.2 is memory usage in bits, Figure 5.4 is the average  
time to encode one information bit in µs, Figure 5.6 is the average CPU  
load when transmitting 100 kbit/s (goodput). Way more interesting is the  
decoding: Figure 5.7 is the average decoding time needed to decode one  
code bit. Figure 5.9 shows achievable bit rates on the given system).

As for SIMD code and Volk: Nope, we’ve done nothing here. But it’s a  
good point. In particular, the Fast Hadamard Transform was implemented  
as part of this toolbox, and I guess that alone could be optimized a  
great deal. I’ll look into it… could be interesting. Thanks for the  
feedback!

MB

–  
Karlsruhe Institute of Technology (KIT)  
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.  
Research Associate

Kaiserstraße 12  
Building 05.01  
76131 Karlsruhe

Phone: +49 721 608-43790  
Fax: +49 721 608-46071  
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and  
National Laboratory of the Helmholtz Association
