我正在使用 python 来分析粒子的异常扩散。我已经得到了粒子轨迹的位移,我想计算并绘制位移自相关与滞后时间 t 的关系。
我认为可能存在使用 t 和位移(如 delta r)的自相关函数的一般函数,但我不能没找到。我可以得到函数或代码吗?
可以使用 numpy 和 matplotlib 库在 Python 中计算和绘制位移自相关函数。以下是如何执行此操作的示例:
import numpy as np
import matplotlib.pyplot as plt
def displacement_autocorrelation(trajectory, lag_times):
"""
计算轨迹的位移自相关函数。
参数
----------
trajectory : numpy array
粒子位置的一维 numpy 数组。
lag_times : numpy array
要计算自相关的一系列滞后时间。
返回值
-------
numpy array
给定滞后时间的位移自相关函数。
"""
# 计算位移
displacements = trajectory[lag_times:] - trajectory[:-lag_times]
# 计算每个滞后时间的自相关
autocorrelation = np.array([np.mean(displacements[:len(displacements)-t] * displacements[t:]) for t in lag_times])
return autocorrelation
# 生成示例轨迹数据
N = 1000
time = np.arange(N)
trajectory = np.cumsum(np.random.randn(N)) # 示例轨迹,此处为随机游走
# 定义滞后时间
lag_times = np.arange(1, N//10) # 计算最多 N/10 个滞后时间的自相关
# 计算位移自相关函数
autocorrelation = displacement_autocorrelation(trajectory, lag_times)
# 绘制结果
plt.plot(lag_times, autocorrelation)
plt.xlabel('滞后时间')
plt.ylabel('位移自相关')
plt.title('位移自相关函数')
plt.show()
在此代码中:
-
displacement_autocorrelation
函数获取轨迹(粒子位置的一维数组)和滞后时间数组作为输入。 - 它计算输入轨迹的位移。
- 然后,它循环遍历每个滞后时间并计算相应时间间隔的位移自相关。
- 每个滞后时间的自相关值都存储在一个数组中并返回。
主脚本部分生成一个示例轨迹(在本例中为随机游走),定义滞后时间数组,调用
displacement_autocorrelation
函数,并绘制结果。
此代码计算给定滞后时间的位移自相关。可以根据的需要调整滞后时间数组。还可以使用此代码探索具有不同类型的运动(例如扩散)的轨迹的行为。
标签:python,velocity,autocorrelation From: 78776671