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进行了简单的比较,看到了国内开发环境的优势。