Query on creating a Transfer function block

Hello All,

I want to create a block which takes input of two streams ( Tx1 and Tx2
)
and give output of two streams,

o1 = a * Tx1 + b * Tx2
o2 = c * Tx1 + d * Tx2,

where a,b,c and d are complex constants.

Can anybody please help on how to realize this block in GNURadio. Any
pointer towards what functions to use would be helpful. Also, should
this
be done at the python level or should a C++ block need to be written?

Regards,
Sagar

Hi Sagar,

this can be done in python as well as in C++; performance-wise C++ would
be most probably advantegous.

But: You can get the same behaviour using existing blocks, by splitting
each input, multiplication with the matching constant, and adding the
results up.
Performance-wise, that would give you all the acceleration available to
GNU Radio for complex multiplication and addition, split up into
different blocks,
allowing for maximum parallelization.
So to conclude, this should neither be written in C++ nor python, but
existing functionality should be employed :slight_smile:

If you’re actually looking to build channel models, have look at the
existing channel models in current GNU Radio versions.

With the best regards,
Marcus M?ller

Sagar,

in ‘master’, there’s a block called multiply_matrix_cc which will do
this.

M