数学卷积¶
数学卷积是一种将两个函数结合起来产生一个新函数的运算,该函数描述了其中一个函数如何 "模糊 "或修改另一个函数。这种运算常用于信号分析、图像处理、控制理论和机器学习。 在本例中,我们将比较在 Engee 和 MATLAB 中对该函数的简单调用。
让我们从 Engee 开始。在该环境中,conv 是 DSP(数字信号处理)软件包的一个函数,用于计算两个数组的离散卷积。在本例中,数组 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()
下面我们来看看 MATLAB 函数。在这种情况下,conv 的工作方式完全相同,没有语法上的差异。因此,让我们比较一下这两个脚本的执行速度和执行精度。
In [ ]:
using MATLAB
tick()
mat"""
% Исходные сигналы
x = [1, 2, 3];
h = [0.2, 0.5, 0.75];
% Выполнение свертки
y = conv(x, h);
"""
tock()
我们可以看到,Engee 的执行速度远远高于MATLAB。
In [ ]:
println("Результат свертки в Engee:")
println(y)
mat"""
disp('Результат свертки в MATLAB:')
disp(y)
"""
在比较结果时,我们可以看到它们完全相同。所不同的是,Engee 不会对答案进行四舍五入,因此可以获得更高的精确度,而不是在计算过程中积累误差。
结论¶
在本例中,我们对 MATLAB 和 Engee 进行了简单的比较,并了解了本地开发环境的优势所在。