Изменение БПФ моего блока источника сигнала автоматически - PullRequest
0 голосов
/ 19 мая 2019

Я сделал свой собственный блок источника сигнала в GNURadio, кодируя блок модуля Python. Теперь моя цель - изменить БПФ автоматически через несколько секунд или миллисекунд.

То, как я кодировал свой блок источника сигнала, заключается в том, что для разных псевдослучайных чисел output_items назначаются разные частоты, для которых я использовал цикл. Но проблема в том, что график FFT показывается только тогда, когда встречается оператор return в функции work (). И до тех пор, пока не будет достигнут «возврат», все итерации будут завершены, следовательно, получая частоту только последней итерации, поэтому на графике БПФ отображается только частота, соответствующая последнему сгенерированному псевдослучайному коду (что нежелательно).

Короче говоря, я хочу как-то показать вывод для каждой итерации цикла 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 - это код для преобразования частоты в синусоидальную волну (не из-за длительности) sub_seed_hop_freq - вектор случайных чисел (псевдослучайный)

...