Engee 文档
Notebook

平均滤波器

平均滤波器是一种广泛用于数字信号和图像处理以降低噪声水平的数字滤波器。 中值滤波器为非线性FIR滤波器。

在这个例子中,我们将看看它的简化实现,看看它的工作效果如何。 下图显示了实现的过滤器的模型。

image.png

在此模型中,window参数确定筛选窗口的大小。

接下来,我们将定义启动模型的功能,并为过滤窗口的维度声明几个选项。

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)
In [ ]:
window_arr = Int64[10,20,100,1e3];

接下来,让我们在具有平均窗口的不同参数的循环中运行此模型并比较结果。

In [ ]:
out_arr = zeros(1001,4)
window = 0;
for i in 1:4  
    window = window_arr[i]
    run_model("Averaging_filter") # Запуск модели.
    out = collect(simout["Averaging_filter/out"]);
    out_arr[:,i] = out.value
end 

plot(out_arr, label=["окно = 10" "окно = 20" "окно = 100" "окно = 1000"])
Building...
Progress 100%
Building...
Progress 100%
Building...
Progress 100%
Building...
Progress 100%
Out[0]:

结论

从得到的图中我们可以看到,细化窗口越大,信号幅度越低,这是因为输入端施加了正弦波,平均窗口越大,我们发现所有可能的信号值之间的平均值,包括函数的最大值和最小值,滤波器本身正常工作并执行其主要功能。

示例中使用的块