我正在尝试使用Python查看天文光谱,并且正在使用numpy.correlate尝试查找径向速度偏移。我正在将每个光谱与一个模板光谱进行比较。我遇到的问题是,无论我使用哪种光谱,numpy.correlate都指出,相关函数的最大值出现在零像素偏移处,即光谱已经对齐,这显然是不正确的。 。以下是一些相关代码:
corr = np.correlate(temp_data, imag_data, mode='same')
ax1.plot(delta_data, corr, c='g')
ax1.plot(delta_data, 100*temp_data, c='b')
ax1.plot(delta_data, 100*imag_data, c='r')
Run Code Online (Sandbox Code Playgroud)
此代码的输出如下所示:
请注意,尽管模板(蓝色)和观察到的(红色)光谱清楚地显示了偏移,但互相关函数在零像素偏移处仍达到峰值。我希望看到的有点像(尽管不完全一样;这只是我可以产生的最接近的表示形式):
在这里,我在模板数据中引入了50个像素的人为偏移,现在它们或多或少地排列在一起。我想要的是,在这样的情况下,峰值出现在50个像素的偏移处而不是零处(我不在乎底部的光谱是否排列整齐;这仅仅是为了视觉表示) 。但是,尽管经过数小时的工作和在线研究,但我找不到找到描述此问题的人,更不用说解决方案了。我尝试使用ScyPy的相关函数和MatLib的xcorr,并且bot展示了同样的东西(尽管我被认为是本质上相同的功能)。
为什么互相关不按我期望的方式运行,如何使它以有用的方式运行?