diff options
-rw-r--r-- | gr-input/grc/CMakeLists.txt | 23 | ||||
-rw-r--r-- | gr-input/grc/Calculation_Calculator.xml | 40 | ||||
-rw-r--r-- | gr-input/grc/Transfer_Function_Denominator.xml | 33 | ||||
-rw-r--r-- | gr-input/grc/Transfer_Function_Numerator.xml | 33 | ||||
-rw-r--r-- | gr-input/grc/Transfer_Function_Transfer_Function.xml | 66 | ||||
-rw-r--r-- | gr-input/python/CMakeLists.txt | 29 | ||||
-rw-r--r-- | gr-input/python/Calculator.py | 92 | ||||
-rw-r--r-- | gr-input/python/Denominator.py | 96 | ||||
-rw-r--r-- | gr-input/python/Numerator.py | 96 | ||||
-rw-r--r-- | gr-input/python/Transfer_Function.py | 100 |
10 files changed, 608 insertions, 0 deletions
diff --git a/gr-input/grc/CMakeLists.txt b/gr-input/grc/CMakeLists.txt index f89d28bcc..10bc2d8ad 100644 --- a/gr-input/grc/CMakeLists.txt +++ b/gr-input/grc/CMakeLists.txt @@ -29,4 +29,27 @@ install(FILES COMPONENT "input_python" ) +install(FILES + Transfer_Function_Numerator.xml + DESTINATION ${GRC_BLOCKS_DIR} + COMPONENT "input_python" +) + +install(FILES + Transfer_Function_Denominator.xml + DESTINATION ${GRC_BLOCKS_DIR} + COMPONENT "input_python" +) + +install(FILES + Calculation_Calculator.xml + DESTINATION ${GRC_BLOCKS_DIR} + COMPONENT "input_python" +) + +install(FILES + Transfer_Function_Transfer_Function.xml + DESTINATION ${GRC_BLOCKS_DIR} + COMPONENT "input_python" +) diff --git a/gr-input/grc/Calculation_Calculator.xml b/gr-input/grc/Calculation_Calculator.xml new file mode 100644 index 000000000..4a29b896e --- /dev/null +++ b/gr-input/grc/Calculation_Calculator.xml @@ -0,0 +1,40 @@ +<?xml version="1.0"?> +<block> + <name>Calculator</name> + <key>Calculation_Calculator</key> + <category>Calculation</category> + <import>import gnuradio.input.Calculator</import> + <make>gnuradio.input.Calculator.Calculator($num_inputs) +self.$(id).set_parameters($Exp,$num_inputs)</make> + +<param> +<name>Expression</name> +<key>Exp</key> +<type>string</type> +</param> + +<param> +<name>Num inputs</name> +<key>num_inputs</key> +<value>1</value> +<type>int</type> +</param> + + <sink> + <name>in0</name> + <type>float</type> + <nports>$num_inputs</nports> + </sink> +<!-- + <sink> + <name>in1</name> + <type>float</type> + <nports>4</nports> + </sink> --> + + + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-input/grc/Transfer_Function_Denominator.xml b/gr-input/grc/Transfer_Function_Denominator.xml new file mode 100644 index 000000000..5ea581a98 --- /dev/null +++ b/gr-input/grc/Transfer_Function_Denominator.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<block> + <name>Denominator</name> + <key>Transfer_Function_Denominator</key> + <category>Transfer Function</category> + <import>import gnuradio.input.Denominator</import> + <make>gnuradio.input.Denominator.Denominator($num_inputs)</make> + +<param> +<name>Num inputs</name> +<key>num_inputs</key> +<value>1</value> +<type>int</type> +</param> + + <sink> + <name>in0</name> + <type>float</type> + <nports>$num_inputs</nports> + </sink> +<!-- + <sink> + <name>in1</name> + <type>float</type> + <nports>4</nports> + </sink> --> + + + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-input/grc/Transfer_Function_Numerator.xml b/gr-input/grc/Transfer_Function_Numerator.xml new file mode 100644 index 000000000..8bb367a62 --- /dev/null +++ b/gr-input/grc/Transfer_Function_Numerator.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<block> + <name>Numerator</name> + <key>Transfer_Function_Numerator</key> + <category>Transfer Function</category> + <import>import gnuradio.input.Numerator</import> + <make>gnuradio.input.Numerator.Numerator($num_inputs)</make> + +<param> +<name>Num inputs</name> +<key>num_inputs</key> +<value>1</value> +<type>int</type> +</param> + + <sink> + <name>in0</name> + <type>float</type> + <nports>$num_inputs</nports> + </sink> +<!-- + <sink> + <name>in1</name> + <type>float</type> + <nports>4</nports> + </sink> --> + + + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-input/grc/Transfer_Function_Transfer_Function.xml b/gr-input/grc/Transfer_Function_Transfer_Function.xml new file mode 100644 index 000000000..203fe4a7b --- /dev/null +++ b/gr-input/grc/Transfer_Function_Transfer_Function.xml @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<block> + <name>Transfer Function</name> + <key>Transfer_Function_Transfer_Function</key> + <category>Transfer Function</category> + <import>import gnuradio.input.Transfer_Function</import> + <make>gnuradio.input.Transfer_Function.Transfer_Function($order,$itype,$tstart,$tstop,$tstep)</make> + +<param> + <name>Order of transfer function</name> + <key>order</key> + <value>1</value> + <type>real</type> + +</param> + + + <param> + <name>Input Types</name> + <key>itype</key> + <type>enum</type> + <option><name>Impulse</name><key>11</key></option> + <option><name>Step</name><key>12</key></option> + <option><name>Ramp</name><key>13</key></option> + </param> + + <param> +<name>tstart</name> +<key>tstart</key> +<value>0</value> +<type>real</type> +</param> + +<param> +<name>tstop</name> +<key>tstop</key> +<value>0</value> +<type>real</type> +</param> + +<param> +<name>tstep</name> +<key>tstep</key> +<value>0</value> +<type>real</type> +</param> + + + <sink> + <name>in</name> + <type>float</type> + <nports>2</nports> + </sink> +<!-- + <sink> + <name>in1</name> + <type>float</type> + <nports>4</nports> + </sink> --> + + + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-input/python/CMakeLists.txt b/gr-input/python/CMakeLists.txt index 992012646..45717a4f0 100644 --- a/gr-input/python/CMakeLists.txt +++ b/gr-input/python/CMakeLists.txt @@ -55,6 +55,35 @@ GR_PYTHON_INSTALL( COMPONENT "input_python" ) +GR_PYTHON_INSTALL( + FILES + Numerator.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/input + COMPONENT "input_python" +) + +GR_PYTHON_INSTALL( + 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" +) + +GR_PYTHON_INSTALL( + FILES + Transfer_Function.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/input + COMPONENT "input_python" +) + + diff --git a/gr-input/python/Calculator.py b/gr-input/python/Calculator.py new file mode 100644 index 000000000..7180bba53 --- /dev/null +++ b/gr-input/python/Calculator.py @@ -0,0 +1,92 @@ +#!/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 + +class Calculator(gr.sync_block): + """ + docstring for block add_python + """ + def __init__(self,num_inputs): + number = num_inputs + a = [] + for i in range(0,number): + a.append(numpy.float32) + print "value of a",a + gr.sync_block.__init__(self, + name="add_python", + in_sig=a, + out_sig=[numpy.float32]) + def set_parameters(self,Exp,num_inputs): + self.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: + a0 = input_items[0] + except IndexError: + pass + try: + a1 = input_items[1] + except IndexError: + pass + try: + a2 = input_items[2] + except IndexError: + pass + try: + a3 = input_items[3] + except IndexError: + pass + try: + a4 = input_items[4] + except IndexError: + pass + try: + a5 = input_items[5] + except IndexError: + pass + try: + a6 = input_items[6] + except IndexError: + pass + try: + a7 = input_items[7] + except IndexError: + pass + try: + a8 = input_items[8] + except IndexError: + pass + try: + 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 + return len(output_items[0]) diff --git a/gr-input/python/Denominator.py b/gr-input/python/Denominator.py new file mode 100644 index 000000000..394b081bc --- /dev/null +++ b/gr-input/python/Denominator.py @@ -0,0 +1,96 @@ +#!/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 + +class Denominator(gr.sync_block): + """ + docstring for block add_python + """ + 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", + in_sig=a, + out_sig=[numpy.float32]) + + def work(self, input_items, output_items): + b=[0,0,0,0,0,0,0,0,0,0] + try: + b[0] = input_items[0][0] + except IndexError: + pass + try: + b[1] = input_items[1][0] + except IndexError: + pass + try: + b[2] = input_items[2][0] + except IndexError: + pass + try: + b[3] = input_items[3][0] + except IndexError: + pass + try: + b[4] = input_items[4][0] + except IndexError: + pass + try: + b[5] = input_items[5][0] + except IndexError: + pass + try: + b[6] = input_items[6][0] + except IndexError: + pass + try: + b[7] = input_items[7][0] + except IndexError: + pass + try: + b[8] = input_items[8][0] + except IndexError: + pass + try: + b[9] = input_items[9][0] + except IndexError: + pass + out = output_items[0][:5] + 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 new file mode 100644 index 000000000..de35d2dc8 --- /dev/null +++ b/gr-input/python/Numerator.py @@ -0,0 +1,96 @@ +#!/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 + +class Numerator(gr.sync_block): + """ + docstring for block add_python + """ + 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", + in_sig=a, + out_sig=[numpy.float32]) + + def work(self, input_items, output_items): + b=[0,0,0,0,0,0,0,0,0,0] + try: + b[0] = input_items[0][0] + except IndexError: + pass + try: + b[1] = input_items[1][0] + except IndexError: + pass + try: + b[2] = input_items[2][0] + except IndexError: + pass + try: + b[3] = input_items[3][0] + except IndexError: + pass + try: + b[4] = input_items[4][0] + except IndexError: + pass + try: + b[5] = input_items[5][0] + except IndexError: + pass + try: + b[6] = input_items[6][0] + except IndexError: + pass + try: + b[7] = input_items[7][0] + except IndexError: + pass + try: + b[8] = input_items[8][0] + except IndexError: + pass + try: + b[9] = input_items[9][0] + except IndexError: + pass + out = output_items[0][:5] + 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/Transfer_Function.py b/gr-input/python/Transfer_Function.py new file mode 100644 index 000000000..d53c55e48 --- /dev/null +++ b/gr-input/python/Transfer_Function.py @@ -0,0 +1,100 @@ +#!/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 Transfer_Function(gr.sync_block): + """ + docstring for block add_python + """ + def __init__(self,order,itype,tstart,tstop,tstep): + a = [] + self.b = [0,0,0,0,0,0] + self.c = [0,0,0,0,0,0] + 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="tf_rises", + in_sig=[numpy.float32,numpy.float32], + out_sig=[numpy.float32]) + + #print "I am over slept" + #print len(self.ret_array) + + def find_resp(self,b,c): + if (self.itype == 11): + typo = "'imp'" + elif (self.itype == 12): + typo = "'step'" + else: + typo = "t" +# print "self b",self.b + 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 + print "I am strin g",string + sciscipy.eval(string) + self.a = sciscipy.read("a") + print "value of a\n",self.a + + + + + + def work(self, input_items, output_items): + + print "input value:\n",input_items + for i in range(0,5): + self.b[i] = input_items[0][i] + # print "I am b[i]", b[i] + #print "I am BBBBB", self.b + + for j in range(0,5): + self.c[j] = input_items[1][j] + #print "I am c[j]", c[j] + #print "I am CCCCC", self.c + self.find_resp(self.b,self.c) + + + out = output_items[0] + self.i+=1 + print "I am self i\n",self.i + if self.i >= len(self.a): + self.i = 0 + print "len of out\n",len(out) + #time.sleep(0.125) + out[:] = numpy.float32(self.a[self.i]) + #print + print "i am out\n",out + + return len(output_items[0]) + + |