声明模型参数
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 Hz")
deviation_fs = fs * 0.05 # 财政司司长的5%
println("偏差频率:<deviation_fs Hz")
println()
snr = 10;
println("SNR:<snr dB")
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")
solver_step = st/S[1]/S[2]
println("求解器步骤:$solver_step")
time_stop = st*2.1
println("模拟步骤:$st")
启动模型
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)
模型工作的结果
In [ ]:
println("SNR:<snr dB")
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 = "平均误差为Aver Average_error % ")
plot(plot(inp, sim), err, layout = grid(2, 1, heights=[0.7, 0.3]), legend=false)
Out[0]: