当前位置: 首页 > 面试题库 >

互相关是否滞后?

花玄裳
2023-03-14
问题内容

假设有两个信号:

import numpy
dt = 0.001

t_steps = np.arange(0, 1, dt)
a_sig = np.sin(2*np.pi*t_steps*4+5)
b_sig = np.sin(2*np.pi*t_steps*4)

我想移动第一个信号以匹配第二个信号。我知道这可以使用互相关来完成,正如Matlab所证明的那样,但是我如何使用SciPy做到这一点。


问题答案:

首先看一些例子。假设我们已经在单元测试课上了。

# Autocorrelation.
y1 = [1, 1, 0, 0, 1, -1, -1]
corr, lag = cross_corr(y1, y1)
self.assertEqual(lag, 0)

y1 = [1, 1, 0 ,1, -1, -1]
y2 = [1, 0, 1, 0, 0, 2]
corr, lag = cross_corr(y1, y2)
self.assertEqual(lag, -2)

这是我的代码。

import numpy as np

def cross_corr(y1, y2):
  """Calculates the cross correlation and lags without normalization.

  The definition of the discrete cross-correlation is in:
  https://www.mathworks.com/help/matlab/ref/xcorr.html

  Args:
    y1, y2: Should have the same length.

  Returns:
    max_corr: Maximum correlation without normalization.
    lag: The lag in terms of the index.
  """
  if len(y1) != len(y2):
    raise ValueError('The lengths of the inputs should be the same.')

  y1_auto_corr = np.dot(y1, y1) / len(y1)
  y2_auto_corr = np.dot(y2, y2) / len(y1)
  corr = np.correlate(y1, y2, mode='same')
  # The unbiased sample size is N - lag.
  unbiased_sample_size = np.correlate(
      np.ones(len(y1)), np.ones(len(y1)), mode='same')
  corr = corr / unbiased_sample_size / np.sqrt(y1_auto_corr * y2_auto_corr)
  shift = len(y1) // 2

  max_corr = np.max(corr)
  argmax_corr = np.argmax(corr)
  return max_corr, argmax_corr - shift


 类似资料:
  • PDPage对象是否包含对其所属PDDocument的引用 换句话说,PDPage是否了解其PDDocument<在应用程序的某个地方,我有一个文档列表 这些文档被合并到一个新的PDDocument中: 然后将此PDI文档分成10个包: 我现在的问题是: 如果我循环遍历列表中这些拆分的PDDocuments的页面,是否有办法知道页面最初属于哪个PDDocument? 另外,如果你有一个PDPage

  • 假设我有两个单独的服务,A和B,它们的SQS队列都订阅了SNS主题“topic-foo”。然后我发布一个消息m1到SNS主题“topic-foo”。 如果服务A拥有的SQS队列(sqs-A)看到了消息m1并对其进行处理(即将其从队列中弹出并处理该消息,使其不再在sqs-A上),是否仍然可以保证服务B拥有的单独的SQS队列(sqs-B)始终能够看到并处理消息m1?(换句话说,AWS SNS发布是否保

  • 这两个函数是否重载

  • 问题内容: 在中,我使用或计算成对互相关函数,以便找出哪个偏移使我获得了最大值。从它的外观来看,给了我一个规范化的值序列。Python的scipy中是否有类似的东西,还是应该使用该模块?目前,我正在执行以下操作: 问题答案: 要使一维数组互相关,请使用numpy.correlate。 对于2d数组,请使用scipy.signal.correlate2d。 还有scipy.stsci.convolv

  • 我有一个使用的项目。现在我想使用我通过CMake集成的预构建tensorflow C-API。但现在我得到了以下错误: libPROTOBUF FATAL谷歌/PROTOBUF/存根/common.cc:61]此程序需要3.9.0版的协议缓冲区运行库,但安装的版本是2.6.1。请更新您的库。如果您自己编译了程序,请确保您的头文件与您的链接时间库来自同一版本的协议缓冲区。(版本验证在“bazel-o

  • 问题内容: 我有一个口才的模型,其中有一个相关的模型: 创建模型时,它不一定具有相关的模型。更新时,可能会添加一个选项,也可能不会添加。 因此,我需要检查相关模型是否存在,以分别对其进行更新或创建: 我要查找的代码在哪里。 问题答案: 在 php 7.2+中, 您不能在关系对象上使用,因此对于所有关系都没有一种万能的方法。使用查询方法代替@tremby,如下所示: 适用于所有关系类型的通用解决方案

  • 问题内容: 在此系统中,我们存储产品,产品图像(产品可能有很多图像)和产品的默认图像。数据库: 如您所见,和,是循环参考。可以吗 问题答案: 不,那不行。表之间的循环引用是混乱的。请参阅这篇(已有十年的历史)文章:SQL By Design:循环参考 一些DBMS可以特别小心地处理这些问题,但是MySQL会遇到问题。 作为您的设计,第一选择是使两个FK之一为可空。这使您能够解决“鸡与蛋”问题(我应

  • 问题内容: 我正在尝试专业地了解Cookie和会话。我知道,当浏览器连接到服务器时,服务器会“询问”浏览器,以在客户端浏览器cookie文件夹中将“cookiessid”粘贴为cookie。 现在我们有了“ phpsessid”,如果客户端进入服务器,浏览器将向服务器发送“phpsessid”,服务器将查看tmp文件夹,如果有匹配项,它将加载用户具有的所有数据这个客户,但我对此过程有些困惑。 如果