The "in" buffer should start at in[0] the history comes into play at allowing enough valid indices to perform the filtering operation over the entire buffer which allows N valid output data versus N-nTAPS. When I looked at filtering in gnuradio the way I thought about it as and at the end I've included some ASCII art to demonstrate it, from the illustration you can see how the history comes into play. I'm no DSP engineer but this seems to work for me someone can feel free to correct me if I'm wrong.
< adapted from gr_fir_fff_generic.cc> for(i=0; i<n; i++) for(j=0; j< ntaps; j++) out[i] += taps[j] * input[i+j] 0 1 2 3 4 5 6 7 8 9 hist0 hist1 hist2 hist3 in0 in1 in2 in3 in4 in5 tap3 tap2 tap1 tap0 0 1 2 3 4 5 6 7 8 9 hist0 hist1 hist2 hist3 in0 in1 in2 in3 in4 in5 tap3 tap2 tap1 tap0 0 1 2 3 4 5 6 7 8 9 hist0 hist1 hist2 hist3 in0 in1 in2 in3 in4 in5 tap3 tap2 tap1 tap0 0 1 2 3 4 5 6 7 8 9 hist0 hist1 hist2 hist3 in0 in1 in2 in3 in4 in5 tap3 tap2 tap1 tap0 0 1 2 3 4 5 6 7 8 9 hist0 hist1 hist2 hist3 in0 in1 in2 in3 in4 in5 tap3 tap2 tap1 tap0 0 1 2 3 4 5 6 7 8 9 hist0 hist1 hist2 hist3 in0 in1 in2 in3 in4 in5 tap3 tap2 tap1 tap0 0 1 2 3 4 5 6 7 8 9 hist0 hist1 hist2 hist3 in0 in1 in2 in3 in4 in5 tap3 tap2 tap1 tap0 al fayez -----Original Message----- From: Josh Blum <j...@joshknows.com> To: Discuss-gnuradio <Discuss-gnuradio@gnu.org> Sent: Sun, Sep 25, 2011 6:59 pm Subject: [Discuss-gnuradio] making gnuradio blocks entirely in python So there is a useful feature I think gnuradio is missing, and thats the ability to rapidly prototype signal processing in python. It would be great if a python block would have access to all the facilities available to a block written in a c++ environment. So I put together pyblock (not to be confused with those other project by the same name). Its a stand-alone build that links against gnuradio. https://github.com/guruofquality/pyblock Theres a few demos: an adder, using tags, interp and decim blocks. https://github.com/guruofquality/pyblock/tree/master/examples The interesting thing is that the work functions just call into numpy routines, so there is a chance that the implementations can be reasonably fast. I would like to be able to support history so i can implement a filter using numpy but I am a little lacking in the basic understanding so fill me in if you know. Suppose I have this work function: int work(int noutput_items, gr_vector_const_void_star &input_items,gr_vector_void_star &output_items){ const float *in = reinterpret_cast<const float *>(input_items[0]); I am assuming history is on the input buffer. Is the vector "in" ninput_items + history() items long? Where ninput_items = noutput_items*/some_factor. Whats the first index of the first item? Is in[0] or in[0-history()]? -Josh _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio