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

Математическая свертка

Математическая свёртка — это операция, которая объединяет две функции для получения новой функции, описывающей, как одна из них «размывает» или модифицирует другую. Эта операция часто используется в анализе сигналов, обработке изображений, теории управления и машинном обучении. В данном примере мы сравним простой вызов этой функции в Engee и MATLAB.

Начнём с Engee. В этой среде conv является функцией пакета DSP (Digital Signal Processing), которая вычисляет дискретную свертку двух массивов. В данном примере массивы x и h представляют собой исходные сигналы, результат свертки сохраняется в переменной y.

In [ ]:
Pkg.add(["TickTock", "DSP"])
In [ ]:
using DSP
using TickTock
tick()
# Исходные сигналы
x = [1, 2, 3]
h = [0.2, 0.5, 0.75]

# Выполнение свертки
y = conv(x, h)
tock()
[ Info:  started timer at: 2024-12-10T07:19:13.139
[ Info:          0.004498645s: 4 milliseconds

Перейдём к функции MATLAB. conv в данном случае работает точно так же и синтаксичиских различий не имеет. Поэтому сравним скорость выполнения этих двух скриптов и точность выполнения.

In [ ]:
using MATLAB
tick()
mat"""
% Исходные сигналы
x = [1, 2, 3];
h = [0.2, 0.5, 0.75];

% Выполнение свертки
y = conv(x, h);
"""
tock()
[ Info:  started timer at: 2024-12-10T07:19:13.204
[ Info:          0.185743239s: 185 milliseconds

Как мы можем видеть, скорость выполнения в Engee значительно выше, чем в MATLAB.

In [ ]:
println("Результат свертки в Engee:")
println(y)

mat"""
disp('Результат свертки в MATLAB:')
disp(y)
"""
Результат свертки в Engee:
[0.20000000000000018, 0.8999999999999997, 2.3499999999999996, 3.0, 2.2499999999999996]
>> >> >> Результат свертки в MATLAB:
>>     0.2000    0.9000    2.3500    3.0000    2.2500

При сравнении результатов видно, что они идентичны. Разница в том, что Engee не округляет ответы, и это позволяет получить более высокую точность, а не накапливать погрешность в процессе расчётов.

Вывод

В данном примере мы выполнили простое сравнение MATLAB и Engee и увидели, в чем преимущества отечественной среды разработки.