summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-input/python/CMakeLists.txt34
-rw-r--r--gr-input/python/Calculator.py27
-rw-r--r--gr-input/python/Denominator.py13
-rw-r--r--gr-input/python/Numerator.py14
-rw-r--r--gr-input/python/Response.py98
-rw-r--r--gr-input/python/Roots.py126
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])
+
+