Hi everyone,

I am trying to develop a frame based structure for gnuradio block on c++.
The frame size will be 2048 point and i will calculate the normalized
amplitude for every frame i.e.

ma = sum(every 2048 points)/2048;
normalized amplitude = all 2048 points / ma;

i wrote a code that gives me the desired result under "work" function;



int
gr_gama_maks_ff::work (int noutput_items,
                        gr_vector_const_void_star &input_items,
                        gr_vector_void_star &output_items)
{
  const float *in = (const float *) input_items[0];
  float *out = (float *) output_items[0];
  float ma = 0.0;
  float acn[noutput_items], an[noutput_items];
  int C = 2048;
  int a = 0;
  int count = 0;

  for (int i = 0; i < noutput_items; i++){
    ma = 0.0;
    for (int m = a*C; m < a*C+C ; m++) {
        ma += in[m]/C;  
    }

    an[i] = in[i]/ma;
    acn[i] = an[i]-1;
    out[i] = acn[i]*d_k;

   if ((i+1) % C == 0) {
    a = a + 1;
   }
  }



As you see i didn't keep a 2048 point array, i just find the sum of
2048 points and then use it for the output (an[i]= in[i]/ma). But i
couldn't figure out how this happens. I mean the while index "i = 1"
in the first for loop, i can reach the i+2047th sample in the second
for loop.

Is there a buffer for every block in gnuradio. If yes what is the size
of the buffer?

I hope i would explain it clear.

Mehmet.

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to