c# - 使用 Math.Net 的互相关
问题描述
我尝试使用此答案中建议的解决方案: cross-correlation using mathdotnet ,但我总是在滞后 0 时获得最大相关性。我的源数据肯定有明显的滞后,偶尔会发生一次。当我使用 Pandas 包在 Python 中运行它时,我能够检测到大多数具有延迟的地方,因为最强的相关性将处于某些滞后状态,但在 Math.Net 中,它始终处于滞后 0 并且在随后的每个滞后中都会减少。
下面是我使用重新采样并归一化为 500 毫秒平均值的数据集的链接。 500ms_0930_1000.csv
这是从其他问题借来的互相关代码。我正在使用一个滑动窗口运行此代码,该窗口每一步需要 40 个点(20 秒)并滑动 20 个(10 秒)。
public IList<(double Corr, double Lag)> CalculateCrossCorrelation(double[] x1, double[] x2)
{
var len = x1.Length;
var len2 = 2 * len;
var len3 = 3 * len;
var s1 = new double[len3];
var s2 = new double[len3];
Array.Copy(x1, 0, s1, len, len);
Array.Copy(x2, 0, s2, 0, len);
var results = new List<(double Corr, double Lag)>(len2);
for (int i = 0; i < len2; i++)
{
results.Add((Corr: Correlation.Pearson(s1, s2), Lag: i - len));
Array.Copy(s2, 0, s2, 1, s2.Length - 1);
s2[0] = 0;
}
return results;
}
解决方案
为什么设置 s2[0]=0?
您不会在初始阶段执行此操作。它给出了一个输出
推荐阅读
- c# - c#字典中使用实体作为键时如何检查键是否存在?
- reactjs - 在页面之间切换时反应useEffect不更新
- python-3.x - 如何对 django 项目进行 cythonize 处理?
- ios - 是否可以全局设置adjustsFontForContentSizeCategory?
- contact-form-7 - 如何检索联系表格 7 提交的远程 IP 地址?
- phpstorm - 提取界面时扫描数千个文件。如何设置目录不扫描整个代码库?
- python - 无论 django 中的用户如何,如何获取所有组名?
- directory - 打开目录 (f_opendir) 的功能不起作用。HW-125 SD 卡适配器通过 spi 与 STM32F429 接口
- python - 如何在 python django restframework 中从视频中捕获图片或生成缩略图?
- r - 时间序列中多元回归的残差图,时间在 R 中的 X 轴上