discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

History and forecast


From: Marco Menchise
Subject: History and forecast
Date: Mon, 28 Aug 2023 11:05:33 +0200

Hi, I'm a gnuradio newbie. 

I'm trying to write a block that calculates output at time k based on three input samples: one at time k-N-1 (in the past), one at time k (the current sample) and one at k+M (in the future).

I spent some hours struggling against "history" and forecast function.

Here:  https://lists.gnu.org/archive/html/discuss-gnuradio/2016-04/msg00520.html
I found a good visualization of  the history concept. As I said, I also need to process "future" samples so I also investigated the "forecast" function.

Here is what I understood:

1) history=N tells the scheduler to prepend N-1 "old" samples to the input_items buffer. The oldest prepended sample has relative index = 0, so the "current" buffer starts at index N-1. 

2) The forecast function must return N-1 + noutput_items+ M, where M is the number of samples required in the future. Forecast *must* take into account history. Each general_work call is guaranteed to have *at least* N-1 + noutput_items+ M samples in input_items buffer.

3) I did some tests and noticed that the scheduler may pass to general_work *more* than N-1+noutput_items+M samples. Extra samples should be ignored by general_work. They will be passed again in the next call.

4) general_work must "consume" just noutput_items samples

I tried to collect all those concepts in the attached figure where I used both absolute and relative indexes to mark samples. I assumed history=4 and M=2. The input_items in the first general_work call has at least 9 samples. I must process input samples from 103 to 106 (included) using samples from 100 to 108 (included) and I must generate 4 output_samples. In the next call I must process samples from 107 to 110 (included) and, again, I must generate 4 output samples. I must ignore "extra" samples in both cases.

Is that correct? I'm I missing something?

Thanks,
Marco

 



gnuradio.drawio (1).png

reply via email to

[Prev in Thread] Current Thread [Next in Thread]