首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用fft反向输出计算互相关

用fft反向输出计算互相关
EN

Stack Overflow用户
提问于 2019-03-30 02:21:59
回答 1查看 671关注 0票数 1

我试图交叉关联两组数据,在把第一个fft和第二个fft的共轭相乘后,再转换回时间空间。为了测试我的代码,我将输出与numpy.correlate的输出进行比较。但是,当我绘制我的代码(仅限于某个窗口)时,这两个信号似乎是相反的/大约为零。

这就是我的输出

我的代码:

代码语言:javascript
复制
import numpy as np
import pyplot as plt

phl_data = np.sin(np.arange(0, 10, 0.1))
mlac_data = np.cos(np.arange(0, 10, 0.1))
N = phl_data.size
zeroes = np.zeros(N-1)
phl_data = np.append(phl_data, zeroes)
mlac_data = np.append(mlac_data, zeroes)

# cross-correlate x = phl_data, y = mlac_data:
# take FFTs:
phl_fft = np.fft.fft(phl_data)
mlac_fft = np.fft.fft(mlac_data)
# fft of cross-correlation
Cw = np.conj(phl_fft)*mlac_fft
#Cw = np.fft.fftshift(Cw)
# transform back to time space:
Cxy = np.fft.fftshift(np.fft.ifft(Cw))
times = np.append(np.arange(-N+1, 0, dt),np.arange(0, N, dt))

plt.plot(times, Cxy)
plt.xlim(-250, 250)

# test against convolving:
c = np.correlate(phl_data, mlac_data, mode='same')
plt.plot(times, c)
plt.show()

(这两个数据集都用N-1零填充)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-30 03:42:14

numpy.correlate解释了这一点:

该函数计算信号处理文本中通常定义的相关性: c_{av}k = sum_n an+k * conj(vn)

以及:

备注 上述相关性的定义并不是唯一的,有时相关的定义可能会有所不同。另一个共同的定义是: c'_{av}k = sum_n an conj(vn+k) 这与c_{av}[k]相关的是c'_{av}[k] = c_{av}[-k]

因此,没有唯一的定义,这两个共同的定义导致了反向输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55427576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档