diff options
-rw-r--r-- | gr-input/python/CMakeLists.txt | 34 | ||||
-rw-r--r-- | gr-input/python/Calculator.py | 27 | ||||
-rw-r--r-- | gr-input/python/Denominator.py | 13 | ||||
-rw-r--r-- | gr-input/python/Numerator.py | 14 | ||||
-rw-r--r-- | gr-input/python/Response.py | 98 | ||||
-rw-r--r-- | gr-input/python/Roots.py | 126 |
6 files changed, 269 insertions, 43 deletions
diff --git a/gr-input/python/CMakeLists.txt b/gr-input/python/CMakeLists.txt index 45717a4f0..77ac986ac 100644 --- a/gr-input/python/CMakeLists.txt +++ b/gr-input/python/CMakeLists.txt @@ -62,29 +62,35 @@ GR_PYTHON_INSTALL( COMPONENT "input_python" ) + GR_PYTHON_INSTALL( - FILES - Denominator.py - DESTINATION ${GR_PYTHON_DIR}/gnuradio/input - COMPONENT "input_python" + FILES + Denominator.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/input + COMPONENT "input_python" ) + GR_PYTHON_INSTALL( - FILES - Calculator.py - DESTINATION ${GR_PYTHON_DIR}/gnuradio/input - COMPONENT "input_python" + FILES + Response.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/input + COMPONENT "input_python" ) GR_PYTHON_INSTALL( - FILES - Transfer_Function.py - DESTINATION ${GR_PYTHON_DIR}/gnuradio/input - COMPONENT "input_python" + FILES + Roots.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/input + COMPONENT "input_python" ) - - +GR_PYTHON_INSTALL( + FILES + Calculator.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/input + COMPONENT "input_python" +) ######################################################################## diff --git a/gr-input/python/Calculator.py b/gr-input/python/Calculator.py index 7180bba53..f2eaf0481 100644 --- a/gr-input/python/Calculator.py +++ b/gr-input/python/Calculator.py @@ -18,9 +18,12 @@ # Boston, MA 02110-1301, USA. # -import time import numpy +from numpy import log +from numpy import exp +from numpy import sqrt from gnuradio import gr +import time class Calculator(gr.sync_block): """ @@ -31,18 +34,19 @@ class Calculator(gr.sync_block): a = [] for i in range(0,number): a.append(numpy.float32) - print "value of a",a +# print "value of a",a gr.sync_block.__init__(self, - name="add_python", + name="Calculator", in_sig=a, out_sig=[numpy.float32]) + + #print "I am over slept" + #print len(self.ret_array) def set_parameters(self,Exp,num_inputs): self.Exp = Exp + #print "This is EXP", Exp self.num_inputs = num_inputs - #print "I am over slept" - #print len(self.ret_array) - def work(self, input_items, output_items): try: @@ -85,8 +89,11 @@ class Calculator(gr.sync_block): a9 = input_items[9] except IndexError: pass - out = output_items[0] - out[:] = eval(self.Exp) -# print "i am length",len(output_items[0][:5]) -# print "value of out",out + #out = output_items[0][0] + print "This is self.Exp\n",self.Exp + + output_items[0][:] = eval(self.Exp) + #print "This is the output value\n", output_items[0][0] + #print "I am the oputput add python\n", eval(self.Exp) return len(output_items[0]) + diff --git a/gr-input/python/Denominator.py b/gr-input/python/Denominator.py index 394b081bc..5d256f136 100644 --- a/gr-input/python/Denominator.py +++ b/gr-input/python/Denominator.py @@ -29,12 +29,10 @@ class Denominator(gr.sync_block): def __init__(self,num_inputs): number = num_inputs a = [] -# out_arr=[] for i in range(0,number): a.append(numpy.float32) - print "value of a",a gr.sync_block.__init__(self, - name="denomenator", + name="Denominator", in_sig=a, out_sig=[numpy.float32]) @@ -80,17 +78,14 @@ class Denominator(gr.sync_block): b[9] = input_items[9][0] except IndexError: pass - out = output_items[0][:5] + + var = len(input_items) + out = output_items[0][:var] out_arr=[] time.sleep(0.001) -# print "value of b",b for i in range(0,len(input_items)): out_arr.append(b[i]) -# print "I am input items",input_items[i][0] -# print "out_array",out_arr out[:] = out_arr -# print "i am length",len(output_items[0][:]) -# print "value of out",out return len(output_items[0][:]) diff --git a/gr-input/python/Numerator.py b/gr-input/python/Numerator.py index de35d2dc8..90b44e285 100644 --- a/gr-input/python/Numerator.py +++ b/gr-input/python/Numerator.py @@ -29,12 +29,10 @@ class Numerator(gr.sync_block): def __init__(self,num_inputs): number = num_inputs a = [] -# out_arr=[] for i in range(0,number): a.append(numpy.float32) - print "value of a",a gr.sync_block.__init__(self, - name="numerator", + name="Numerator", in_sig=a, out_sig=[numpy.float32]) @@ -80,17 +78,13 @@ class Numerator(gr.sync_block): b[9] = input_items[9][0] except IndexError: pass - out = output_items[0][:5] + var = len(input_items) + o1 = output_items[0][:var] out_arr=[] time.sleep(0.001) -# print "value of b",b for i in range(0,len(input_items)): out_arr.append(b[i]) -# print "I am input items",input_items[i][0] -# print "out_array",out_arr - out[:] = out_arr -# print "i am length",len(output_items[0][:]) - print "value of out",out + o1[:] = out_arr return len(output_items[0][:]) diff --git a/gr-input/python/Response.py b/gr-input/python/Response.py new file mode 100644 index 000000000..b895ca77c --- /dev/null +++ b/gr-input/python/Response.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python +# +# Copyright 2015 <+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 sys +import time +import numpy +from gnuradio import gr +import sciscipy + +class Response(gr.sync_block): + """ + docstring for block add_python + """ + def __init__(self,order,itype,tstart,tstop,tstep): + sys.setrecursionlimit(2000) + a = [] + self.b = [0.0,0.0,0.0,0.0,0.0,0.0] + [float(i) for i in self.b] + self.c = [0,0,0,0,0,0] + [float(i) for i in self.c] + self.i = 0 + self.order=int(order)+1 + self.itype = itype + self.tstart = tstart + self.tstop = tstop + self.tstep = tstep + gr.sync_block.__init__(self, + name="Response", + in_sig=[numpy.float32,numpy.float32], + out_sig=[numpy.float32]) + + def find_resp(self,b,c): + if (self.itype == 11): + typo = "'imp'" + elif (self.itype == 12): + typo = "'step'" + else: + typo = "t" + string1 = "s=%s; h=syslin('c'," + string2 = str(b[4])+"*s^4+"+str(b[3])+"*s^3+"+str(b[2])+"*s^2+"+str(b[1])+"*s+"+str(b[0])+"," + string3 = str(c[4])+"*s^4+"+str(c[3])+"*s^3+"+str(c[2])+"*s^2+"+str(c[1])+"*s+"+str(c[0])+");" + string4 = "t="+str(self.tstart)+":"+str(self.tstep)+":"+str(self.tstop)+";" + string5 = "deff('u=input(t)','u=50');" + string6 = "r=tf2ss(h); a=csim("+typo+",t,r);" + string = string1+string2+string3+string4+string5+string6 + sciscipy.eval(string) + self.a = sciscipy.read("a") + + def work(self, input_items, output_items): + #sys.setrecursionlimit(1500) + k = self.order + + for i in range(0,k): + + self.b[i] = input_items[0][i] + for n,i in enumerate(self.b): + if i == 'nan': + self.b[n] = 0 + + + print "I am value of b\n",self.b + + + for j in range(0,k): + self.c[j] = input_items[1][j] + + for m,i in enumerate (self.c): + if n == 'nan': + self.c[m] = 0 + + print "I am vlaue of c\n", self.c + self.find_resp(self.b,self.c) + + + out = output_items[0] + self.i+=1 + if self.i >= len(self.a): + self.i = 0 + out[:] = numpy.float32(self.a[self.i]) + return len(output_items[0]) + + diff --git a/gr-input/python/Roots.py b/gr-input/python/Roots.py new file mode 100644 index 000000000..1057c8d76 --- /dev/null +++ b/gr-input/python/Roots.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python +# +# Copyright 2015 <+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 time +import numpy +from gnuradio import gr +import sciscipy + +class Roots(gr.sync_block): + """ + docstring for block add_python + """ + def __init__(self,order): + self.out = [0,0,0,0,0,0,0,0,0,0] + a = [] + self.b = [0,0,0,0,0,0] + self.order=int(order)+1 + self.number = int(order)*2 + for i in range(0,self.number): + a.append(numpy.float32) + gr.sync_block.__init__(self, + name="Roots", + in_sig=[numpy.float32], + out_sig=a) + + def find_roots(self,n): + string1 = "s=%s;" + string2 = "h2="+str(n[3])+"*s^3+"+str(n[2])+"*s^2+"+str(n[1])+"*s+"+str(n[0])+";[E1]=roots(h2);a11=real(E1(1));a12=imag(E1(1));b11 = real(E1(2));b12 = imag(E1(2));c11 = real(E1(3));c12 = imag(E1(3)); d11 = real(E1(4)); d12 = imag(E1(4)); e11 = real(E1(5)); e12 = imag(E1(5));" + string = string1+string2 + print "This is string\n", string + sciscipy.eval(string) + + + try: + self.a11 = sciscipy.read("a11") + print "I am a11", self.a11 + except TypeError: + self.a11 = 0 + try: + self.a12 = sciscipy.read("a12") + print "I am a12", self.a12 + except TypeError: + self.a12 = 0 + try: + self.b11 = sciscipy.read("b11") + print "I am b11", self.b11 + except TypeError: + self.b11 = 0 + try: + self.b12 = sciscipy.read("b12") + except TypeError: + self.b12 = 0 + try: + self.c11 = sciscipy.read("c11") + print "I am c11\n", self.c11 + except TypeError: + self.c11 = 0 + try: + self.c12 = sciscipy.read("c12") + print "I am c12\n", self.c12 + except TypeError: + self.c12 = 0 + try: + self.d11 = sciscipy.read("d11") + print "I am d11\n", self.d11 + except TypeError: + self.d11 = 0 + try: + self.d12 = sciscipy.read("d12") + except TypeError: + self.d12 = 0 + try: + self.e11 = sciscipy.read("e11") + except TypeError: + self.e11 = 0 + try: + self.e12 = sciscipy.read("e12") + except TypeError: + self.e12 = 0 + + def work(self, input_items, output_items): + +# print "I am here\n", output_items + k = self.order + for i in range(0,k): + self.b[i] = input_items[0][i] + + self.find_roots(self.b) + + + self.out[0] = numpy.float32(self.a11) + self.out[1] = numpy.float32(self.b11) + self.out[2] = numpy.float32(self.a12) + self.out[3] = numpy.float32(self.b12) + self.out[4] = numpy.float32(self.c11) + self.out[5] = numpy.float32(self.c12) + self.out[6] = numpy.float32(self.d11) + self.out[7] = numpy.float32(self.d12) + self.out[8] = numpy.float32(self.e11) + self.out[9] = numpy.float32(self.e12) + + + for i in range (0,self.number): + output_items[i][:]= self.out[i] + print "I am out item",output_items + + return len(output_items[0]) + + |