Python 中的互相关
互相关是一种重要的信号处理方法,用于分析具有不同滞后的两个信号之间的相似性。 您不仅可以了解两个信号的匹配程度,还可以获得它们最相似的时间点或索引。
本文将讨论在 Python 中处理互相关的多种方法。
Python 中的互相关
我们可以单独使用Python来计算两个信号的互相关。 我们可以使用下面的公式并将其转换为 Python 脚本。
公式:
R_{fg}(l) = \sum_{n=0}^{N} f(n)g(n+l)
示例代码:
sig1 = [1,2,3,2,1,2,3]
sig2 = [1,2,3]
# Pre-allocate correlation array
corr = (len(sig1) - len(sig2) + 1) * [0]
# Go through lag components one-by-one
for l in range(len(corr)):
corr[l] = sum([sig1[i+l] * sig2[i] for i in range(len(sig2))])
print(corr)
输出:
[14, 14, 10, 10, 14]
现在,让我们浏览一下使用互相关函数的多个 Python 包。
使用 NumPy 模块
用于数值计算的标准 Python 模块称为 NumPy。 NumPy 具有内置的互相关技术并不奇怪。 如果我们没有安装NumPy,我们可以使用以下命令安装它:
pip install numpy
示例代码:
import numpy as np
sig1 = [1,2,3,2,1,2,3]
sig2 = [1,2,3]
corr = np.correlate(a=sig1, v=sig2)
print(corr)
输出:
[14 14 10 10 14]
使用 SciPy 模块
当 NumPy 失败时,SciPy 是要考虑的主要包。 它包括许多工程和科学学科的实用技术。
但首先我们必须导入互相关相关的信号处理软件。 然后,信号在开始和结束时通过 SciPy 互相关自动填充。
因此,与我们的纯 Python 代码和 NumPy 模块相比,它为互相关提供了更广泛的信号响应。 因此,我们删除了这些填充组件,以使结果在我们的测试用例中相同。
如果我们没有安装SciPy,我们可以使用以下命令安装它:
pip install scipy
示例代码:
import scipy.signal
sig1 = [1,2,3,2,1,2,3]
sig2 = [1,2,3]
corr = scipy.signal.correlate(sig1, sig2)
# Removes padded Correlations
corr = corr[(len(sig1)-len(sig2)-1):len(corr)-((len(sig1)-len(sig2)-1))]
print(corr)
输出:
[14 10 10]
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串