我通过对Python模块块进行编码,在GNURadio中创建了自己的信号源块。 现在,我的目标是在几秒钟或几毫秒后自动更改它的FFT。
我对信号源块进行编码的方式是,在不同的伪随机数下,为output_items分配了不同的频率,为此我将其用于循环。但是问题在于,仅当遇到work()函数中的“ return”语句时,FFT图才会显示。并且直到到达“返回”时间为止,所有迭代都已经完成,因此仅产生最后一次迭代的频率,因此在FFT图中,仅显示与所生成的最后一个伪随机码相对应的频率(这是不希望的)。 / p>
长话短说,我想以某种方式显示for循环的每次迭代的输出,但是'return'语句不允许我这样做。它仅返回上次迭代频率。
work(self, input_items, output_items)
.
.
local_fs =4096
SINTAB= empty([len(output_items[0])])
SINTAB = np.zeros((4096),dtype=complex)
for i in range(0,len(output_items[0])-1):
SINTAB[i]= math.sin(2*3.14*(i)/local_fs)-1j*math.cos(2*3.14*(i)/local_fs)
for f_local_index in range( 0 , 7):
check = sub_seed_hop_freq[f_local_index]
if check==1:
Freq = 0.5e6;
elif check==2:
Freq = 1e6;
elif check==3:
Freq = 1.5e6;
payload_transmitted_at = Freq
.
. (payload_step is assigned values in if else statements depending
upon the corresponding frequencies in above if else )
.
for i in range (0 , len(output_items[0])-1):
#print(len(output_items[0])-1)
output_items[0][i] = SINTAB[int(round(index_f))]
#local_I_mega_sub_seed(i) = COSTAB(round(index_f));
index_f = index_f + payload_step
#print(payload_step)
if index_f>len(output_items[0])-1:
index_f = index_f - len(output_items[0])
return len(output_items[0])
Rest是将Freq转换为正弦波的代码(由于冗长而未放置) sub_seed_hop_freq是随机数(伪随机数)的向量