数学卷积
数学卷积是将两个函数组合在一起以产生一个新函数的操作,该函数描述其中一个函数如何"模糊"或修改另一个函数。 这种操作通常用于信号分析、图像处理、控制理论和机器学习。
在此示例中,我们将比较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进行了简单的比较,看到了国内开发环境的优势。