如何使用GNURadio处理Python块中样本的输入和输出数量?
我正在用Python构建一个GNURadio块,用根升余弦信号卷积输入信号。我注意到发送到函数general_work的输入信号有许多不同的样本,这对于我来说非常烦人。事实上,对于样本数为n_的输入信号和样本数为n的根升余弦滤波器,输出信号的长度为n_in+n-1(卷积信号的特性) 我不能使用插值块,因为我不知道n_in,所以我不知道插值因子(n_in+n-1)/n_in的值。 因此,由于提供了gr_modtool,我正在使用此表单的常规块:如何使用GNURadio处理Python块中样本的输入和输出数量?,python,gnuradio,Python,Gnuradio,我正在用Python构建一个GNURadio块,用根升余弦信号卷积输入信号。我注意到发送到函数general_work的输入信号有许多不同的样本,这对于我来说非常烦人。事实上,对于样本数为n_的输入信号和样本数为n的根升余弦滤波器,输出信号的长度为n_in+n-1(卷积信号的特性) 我不能使用插值块,因为我不知道n_in,所以我不知道插值因子(n_in+n-1)/n_in的值。 因此,由于提供了gr_modtool,我正在使用此表单的常规块: import numpy as np from gn
import numpy as np
from gnuradio import gr
class Convolve(gr.basic_block):
"""
docstring for block Convolve
"""
n=45 #Number of samples in the Root-raised cosine signal
def __init__(self):
gr.basic_block.__init__(self,
name="Convolve",
in_sig=[np.complex64],
out_sig=[np.complex64])
def forecast(self, noutput_items, ninput_items_required):
#setup size of input_items[i] for work call
print("---------- Forecast function --------------")
n_in = noutput_items-self.n+1
if n_in<=0:
ninput_items_required[0]=1
else:
ninput_items_required[0]=n_in
print("n_in : ", n_in)
print("ninput_items_required[0] : ", ninput_items_required[0])
print("noutput_items : ", noutput_items)
def general_work(self, input_items, output_items):
print("---------- General work function ----------------")
output_items[0][:] = 1 #Output is not important for the example
print("input_items[0] : ", len(input_items[0]))
print("output_items[0] : ", len(output_items[0]))
self.consume(0, len(input_items[0]))
#self.consume_each(len(input_items[0]))
return len(output_items[0])
看起来函数Forecast被多次调用以测试输入和输出长度的不同值。它似乎工作正常,但在调用通用功函数之后,输入和输出的长度在此示例中是相同的。。。这与使用Forecast函数获得的值不一致
---------- General work function ----------------
('input_items[0] : ', 4096)
('output_items[0] : ', 4096)
有人能解释一下为什么在一般功函数中有相同长度的信号吗?
如何更轻松地处理输入和输出信号的长度?
是否有更合适的方法来处理n_in为负值的情况,而不是这种方式:
[...]
if n_in<=0:
ninput_items_required[0]=1
else:
ninput_items_required[0]=n_in
[...]
[…]
如果你不在
[...]
if n_in<=0:
ninput_items_required[0]=1
else:
ninput_items_required[0]=n_in
[...]