Hi, I wonder if anybody has any suggestion on how to integrate a vector signal? I have a block that generates a vector signal, but I want to integrate the output over 3-10 vectors to improve the SNR. Now if this was a regular stream signal I would have just used a FIR filter with N taps to implement this ( y(n) = x(n) + x(n-1) + ... + x(n-N-1) ) , but I am not sure how to accomplish the same thing on a vector signal. Any comments are welcome! -- Trond Danielsen

on 2007-04-12 11:20

on 2007-04-12 18:49

Trond Danielsen wrote: > I wonder if anybody has any suggestion on how to integrate a vector > signal? I have a block that generates a vector signal, but I want to > integrate the output over 3-10 vectors to improve the SNR. Now if > this was a regular stream signal I would have just used a FIR filter > with N taps to implement this ( y(n) = x(n) + x(n-1) + ... + x(n-N-1) > ) , but I am not sure how to accomplish the same thing on a vector > signal. You can use the gr.single_pole_iir_filter_xx block, but set the vlen parameter (second constructor argument, defaults to 1) to the length of your vector. The block will create a single pole IIR filter for each position in the vector, then as the vectors come in, the filters will act in parallel so the output vectors are the result of treating each vector element as its own stream of data values. The constructor parameter 'alpha' determines the amount of smoothing; 1.0 is no smoothing (out = in), and with 0.0 the output would never change from zero. Mathematically, its the same as resistor-capacitor low pass filter. Google "exponential average filter" for a more detailed discussion on how to determine the alpha parameter to have the filter response you want. There is a good example of using this in the fftsink.py code, where the vector output of the FFT goes through an averaging filter before it gets sent to the display window. See line 116. -- Johnathan Corgan Corgan Enterprises LLC http://corganenterprises.com

on 2007-04-12 18:56

2007/4/12, Johnathan Corgan <jcorgan@corganenterprises.com>: > You can use the gr.single_pole_iir_filter_xx block, but set the vlen > change from zero. Mathematically, its the same as resistor-capacitor > low pass filter. > > Google "exponential average filter" for a more detailed discussion on > how to determine the alpha parameter to have the filter response you want. > > There is a good example of using this in the fftsink.py code, where the > vector output of the FFT goes through an averaging filter before it gets > sent to the display window. See line 116. Thanks a lot! Don't know how I missed that one. -- Trond Danielsen