Channel model question

I have a nagging doubt about how the channel model is implemented in
gnuradio. Suppose I have an input signal entering the channel model at
100,000 samples/sec. Let’s say the channel model has to add an offset of
1000Hz to the input signal. Then I must have 100,000 samples of a 1000Hz
SINE_WAVE signal and multiply each input sample with a corresponding
sample. Am I right? If I am right then i don’t see this happening here
the sampling rate given as 1 in the line below

d_freq_offset = gr_make_sig_source_c(1, GR_SIN_WAVE, frequency_offset,

If I am wrong then will someone please correct me here.

thank you very much

sorry guys my bad. The frequency_offset here is a ratio of the input
sampling frequency. I should be RTFMing more carefully. :slight_smile:


For some reason, the channel model’s frequency_offset is not in Hz.
Rather its a fraction of the sample rate. You should pass in
my_offset_in_hz/my_sample_rate to this parameter.

The signal source works like that. I suppose that means that the sample
rate and frequency are redundant because you really only care about the
ratio between them.


oh consistency…

But still there is a problem. 1000/100,000 = 0.01 so the channel_model
consume 100,000 samples coming into it to represent an offset of 1000Hz.
How, does it know how many samples to consume as the ratio can be the
for a different combination such as 100/10000.

If x(i) = sin(2pifreq_offset_ratio*i) , i must vary from

That ratio of frequency/sample_rate tells the signal source how much to
change the output per sample such that it will take 1.0/ratio samples to
make a complete sinusoid period or cycle.

Try this out in grc. Look at the signal source in the scope sink, and
then try it with 1.0 as the sample rate and freq/samp_rate as the
frequency. It will look the same.


Yes, that is it. Thanks a lot for your help Josh.