#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2016 <+YOU OR YOUR COMPANY+>. # # This is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. # import numpy from gnuradio import gr class seq_ed(gr.sync_block): """ docstring for block seq_ed """ def __init__(self,number,slots,beta,alpha,noise): self.number=number self.slots=slots self.beta=beta self.alpha=alpha self.noise=noise gr.sync_block.__init__(self, name="seq_ed", in_sig=[numpy.float32], out_sig=[numpy.float32]) #def get_sequential_energy(self, sample): def work(self, input_items, output_items): in0 = input_items[0] out = output_items[0] for i in range(0,len(in0)/self.number): pn = [] m = i*self.number for d in in0[m: m + self.number]: pn[i] += d if pn[i] >= self.alpha: out[i] = 1 elif pn[i] <= self.beta: out[i] = 0 else: if pn[i] >= self.noise: out[i] = 1 else: out[i] = 0 return len(output_items[0])