Yes, the suggested combination of IIR filter and the keen one in N Block
would potentially do the job. However as you pointed out, my end
goal is to have a median of 4 vectors block. Also I was thinking that
a direct average would be numerically less expensive than the combination
of two different blocks.
Also, I’ve been trying for
a few weeks to get an out of tree module to work, so am stubbornly
hoping that I might figure it out. (Actually I’m hoping someone might
tell me how to figure it out.)
Your suggestion of returning 1 instead of vector size might solve this.
I’ll give it a try.
> On Mar 11, 2018, at 3:23 PM, Marcus D. Leech <mle...@ripnet.com> wrote:
> On 03/11/2018 02:06 PM, Glen I Langston wrote:
>> Hello Gnuradio experts,
>> I'm following the gnuradio tutorial for creating an out of tree python block.
>> My intention is fairly simple. To have a input stream of 4 vectors
>> and average these 4 vectors, outputting a single average vector
>> after the 4th vector arrives. Right now my vectors are 1024 channel
>> total power spectra.
>> My code is attached, along with the quality control code.
>> I've been at this for a while, but I must have the wrong model
>> in my head on how gnuradio holds these samples.
>> I'm not getting the proper size matches. I can not find any
>> decimation help, despite hours of googling...
>> My intention is to make this 4 vector average with decimate a
>> part of the .grc environment, but the problems are easier to diagnose,
>> as the QA code is stands alone. Here are the messages I’m getting:
>> ESMU:vdecimate glangsto$ python qa_vdecimate.py
>> handler caught exception: could not broadcast input array from shape
>> (4,1024) into shape (1,1024)
>> Traceback (most recent call last):
>> line 55, in eval
>> try: self._callback()
>> line 160, in __gr_block_handle
>> ) for i in self.__out_indexes],
>> File "/Users/glangsto/Desktop/Research/vdecimate/vdecimate.py", line 58,
>> in work
>> out[:] = self.sum/float(self.count)
>> ValueError: could not broadcast input array from shape (4,1024) into shape
>> thread[thread-per-block: <block vdecimate (2)>]: SWIG director method
>> error. Error detected when calling 'feval_ll.eval'
> I realize that your ultimate goal is to do a window=4 median filter, and this
> vecimate.py is a "stepping stone" to that.
> But the specfic goal of "average 4 vectors, then decimate" can be achieved
> (approximately) with a single-pole IIR filter with the right parameters,
> by a keep-one-in-N block.
> Discuss-gnuradio mailing list
Discuss-gnuradio mailing list