Документация Engee
Notebook

Влияние одиночных импульсов BER

Открыть пример в Engee

В данном примере мы рассмотрим систему приёмника и передатчика BPSK с одиночными помехами в данных. Сама система показана на рисунке ниже.

image.png

На верхнем уровне мы видим генератор случайного набора данных, BPSK и генератор импульсов, который показан на рисунке ниже.

image.png

В данной подсистеме есть 3 генератора импульсов. За счёт задержек и сумматоров мы увеличиваем количество этих импульсов.

Далее зададим вспомогательную функцию для запуска модели.

In [ ]:
# Подключение вспомогательной функции запуска модели.
function run_model( name_model)
    
    Path = (@__DIR__) * "/" * name_model * ".engee"
    
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    sleep(5)
    return model_output
end
Out[0]:
run_model (generic function with 1 method)

Запустим модель c выключенными и включёнными помехами.

In [ ]:
EnableImpulse = 0;
run_model("BPSK_and_Impulse") # Запуск модели.

BER = collect(BER)
println("BER: " * string(BER.value[end]))

EnableImpulse = 1;
run_model("BPSK_and_Impulse") # Запуск модели.

BER = collect(BER)
print("BER: " * string(BER.value[end]))
Building...
Progress 0%
Progress 0%
Progress 5%
Progress 10%
Progress 17%
Progress 22%
Progress 28%
Progress 34%
Progress 40%
Progress 46%
Progress 51%
Progress 56%
Progress 62%
Progress 67%
Progress 73%
Progress 78%
Progress 84%
Progress 89%
Progress 95%
Progress 100%
Progress 100%
BER: [0.0, 0.0, 1501.0]
Building...
Progress 5%
Progress 14%
Progress 20%
Progress 25%
Progress 31%
Progress 37%
Progress 43%
Progress 48%
Progress 53%
Progress 59%
Progress 65%
Progress 70%
Progress 75%
Progress 80%
Progress 85%
Progress 90%
Progress 96%
Progress 100%
Progress 100%
BER: [0.002664890073284477, 4.0, 1501.0]

Вывод

Как мы видим исходя из результатов, в нашем случае после добавления помех несколько значений были идентифицированы неправильно. Скорее всего, это связано с тем, что появились точки, которые были определены как 1 вместо 0. Для того, чтобы избежать такой ситуации, используйте интерполяцию и усреднение.

Блоки, использованные в примере