自动更改信号源模块的FFT

时间:2019-05-19 09:27:34

标签: python gnuradio

我通过对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是随机数(伪随机数)的向量

0 个答案:

没有答案