Реализация фильтров нижних и верхних частот
В данной демонстрации показаны реализации двух фильтров, заданных следующими разностными уравнениями:
- Фильтр нижних частот: y(n) = 0,5x(n) + 0,5x(n-1) (усреднение)
- Фильтр верхних частот: y(n) = 0,5x(n) - 0,5x(n-1) (конечная разность)
На рисунке ниже показана модель из которой мы видим, что для фильтров даны общие коэффициенты и главные их отличия заключены в последнем сумматоре.

Далее для запуска модели применим вспомогательную функцию.
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
run_model("hipass_lopass") # Запуск модели.
Проанализируем записанные результаты построив графики сигналов во временной и в частотной областях.
hipass = collect(simout["hipass_lopass/hipass"]);
lopass = collect(simout["hipass_lopass/lopass"]);
plot(hipass.time[1:500], [hipass.value[1:500], lopass.value[1:500]],label=["Фильтр нижних частот" "Фильтр верхних частот"])
Как мы видим исходя из данных представленных во временной области, главные отличия между данными на выходе фильтров верхних и нижних частот, это различия в амплитуде сигналов и неравномерности колебательных импульсов, данную тенденцию мы наблюдаем при использовании фильтров верхних частот.
using FFTW
Comp_hipass = ComplexF64.(hipass.value);
Comp_lopass = ComplexF64.(lopass.value);
spec_hipass = fftshift(fft(Comp_hipass));
spec_lopass = fftshift(fft(Comp_lopass));
x = [10log10.(abs.((spec_hipass/3e6))),10log10.(abs.((spec_lopass/3e6)))];
plot(x, label =["Фильтр нижних частот" "Фильтр верхних частот"])
ylabel!("Мощность дБВт")
xlabel!("Частота МГц")
Исходя из спектров сигналов мы видим, что фильтры работают корректно.
Вывод
В данном примере мы разобрали различия между фильтрами верхних частот и фильтрами нижних частот используя в обоих случаях одни и те же коэффициенты, тем самым показали, что различий между этими фильтрами в плане реализации достаточно мало.