Engee 文档
Notebook

数学卷积

数学卷积是一种将两个函数结合起来产生一个新函数的运算,该函数描述了其中一个函数如何 "模糊 "或修改另一个函数。这种运算常用于信号分析、图像处理、控制理论和机器学习。 在本例中,我们将比较在 EngeeMATLAB 中对该函数的简单调用。

让我们从 Engee 开始。在该环境中,conv 是 DSP(数字信号处理)软件包的一个函数,用于计算两个数组的离散卷积。在本例中,数组 xh 代表原始信号,卷积的结果存储在变量 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 不会对答案进行四舍五入,因此可以获得更高的精确度,而不是在计算过程中积累误差。

结论

在本例中,我们对 MATLABEngee 进行了简单的比较,并了解了本地开发环境的优势所在。