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

Объявление параметров модели

In [ ]:
using Images
In [ ]:
path_img = "$(@__DIR__)/img.jpg"
inp_img = imrotate(Gray.(load(path_img)), π*-90/180)
S = size(inp_img)
println("Размер входного изображения: $(S))")
println()
num = 400 # Количество групп
println("Количество групп: $num")
println("Количество значений в группе: $((S[1]*S[2])/num)")
println()
bit_mask = 0b01010101 # max 8 bit
println("bit_mask: $bit_mask")
println()
fs = 100e3 # Hz
println("Несущая частота: $fs Гц")
deviation_fs = fs * 0.05 # 5% от fs
println("Частота девиации: $deviation_fs Гц")
println()
snr = 10;
println("SNR: $snr дБ")
snr_linear = 10^(snr / 10)
signal_power = 1
noise_power = 1 / snr_linear
println("Мощность шума: $noise_power")
println()
st = 1/fs*S[1]*S[2] # Sample time
println("Время одного отсчёта: $st")
step = st/S[1]/S[2]
println("Шаг решателя: $step")
time_stop = st*2.1
println("Шаг моделирования: $st")
Размер входного изображения: (160, 160))

Количество групп: 400
Количество значений в группе: 64.0

bit_mask: 85

Несущая частота: 100000.0 Гц
Частота девиации: 5000.0 Гц

SNR: 10 дБ
Мощность шума: 0.1

Время одного отсчёта: 0.256
Шаг решателя: 1.0e-5
Шаг моделирования: 0.256

Запуск модели

In [ ]:
    name_model = "SSTV"
    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)
Building...
Progress 0%
Progress 5%
Progress 10%
Progress 16%
Progress 22%
Progress 27%
Progress 35%
Progress 41%
Progress 47%

Результаты работы модели

In [ ]:
println("SNR: $snr дБ")
println()
ber = ((collect(BER)).value)[end] 
println("Всего бит: $(Int(ber[3]))")
println("Кол-во ошибок: $(Int(ber[2]))")
println("BER: $(round(ber[1], digits=2))")

inp = plot(framestyle=:none, grid=false, title = "Вход")
heatmap!( 1:S[2], 1:S[1], permutedims(inp_img, (2, 1)), colorbar=false)

sim_img = imrotate(colorview(Gray, ((collect(img_FM))[3,:].value)), π*-90/180)
sim = plot(framestyle=:none, grid=false, title = "Выход")
heatmap!( 1:size(sim_img, 2), 1:size(sim_img, 1), permutedims(sim_img, (2, 1)), colorbar=false)

sim_error = (collect(error_sim)).value 
Average_error = round(sum(abs.(sim_error))/length(sim_error)*100, digits=2)
err = plot(sim_error, title = "Cредняя ошибка равна $Average_error % ")

plot(plot(inp, sim), err, layout = grid(2, 1, heights=[0.7, 0.3]), legend=false) 
SNR: 10 дБ

Всего бит: 430088
Кол-во ошибок: 39674
BER: 0.09
Out[0]: