- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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')
最佳答案
您遇到的问题可能是因为您的光谱不是以零为中心的;无论您绘制哪种单位,它们的 RMS 值看起来都约为 100。这是一个问题的原因是因为卷积/互相关函数必须用零填充您的频谱,以便在“相同”模式下计算完整响应。因此,即使您的信号最相似,偏移量约为 50 个样本,但当两个信号未完全对齐时,您仅对它们重叠的乘积进行积分,并丢弃所有偏移值,因为它们乘以零。这是有问题的,因为您的光谱不是零均值,并且它们的相关性在重叠时几乎呈线性增加。
请注意,您的互相关结果看起来像一个三角脉冲,这可能是您从两个方波脉冲(参见 Convolution of a Rectangular "Pulse" With Itself)的互相关中所期望的结果。那是因为您的频谱,一旦被填充,看起来就像一个从零到一个的阶跃函数100 左右略带噪声值的脉冲——实际上是矩形脉冲与高斯噪声的卷积。您可以尝试使用 mode='full'
进行卷积以查看您正在关联的两个光谱的整个响应,或者,请注意,使用 mode='valid'
时,您应该只得到一个值作为返回,因为您的两个光谱长度完全相同,因此您可以将它们完全对齐的偏移量(零!)。
为了避免这个问题,您可以尝试减去光谱的 RMS 值,使它们以零为中心,或者用它们在任一侧的 RMS 值中的长度填充两个光谱。
编辑 :
为了回答您在评论中提出的问题,我想我会附上一个图形来使我试图更清楚地描述这一点。
假设我们有两个值向量,与您的光谱并不完全不同,每个向量都与零有很大的偏移。
# Generate two noisy, but correlated series
t = np.linspace(0,250,250)
f = 10*np.exp(-((t-90)**2)/8) + np.random.randn(250) + 40
g = 10*np.exp(-((t-180)**2)/8) + np.random.randn(250) + 40
np.correlate(g,f,mode='same')
,我们必须在任一侧“填充” g 的一半长度为零(默认情况下;您可以填充其他值。)如果我们不要填充 g (如
np.correlate(g,f,mode='valid')
),我们只会得到
一个 值作为返回(与零偏移的相关性),因为 f 和 g 的长度相同,并且没有空间相对移动其中一个信号到另一个。
xcorr = np.correlate(g,f,'same')
xcorr_rms = np.correlate(g-40,f-40,'same')
fig, axes = plt.subplots(5,2,figsize=(18,18),gridspec_kw={'width_ratios':[5,2]})
for n, axis in enumerate(axes):
offset = (0,75,125,215,250)[n]
fp = np.pad(f,[offset,250-offset],mode='constant',constant_values=0.)
gp = np.pad(g,[125,125],mode='constant',constant_values=0.)
axis[0].plot(fp,color='purple',lw=1.65)
axis[0].plot(gp,color='orange',lw=lw)
axis[0].axvspan(max(125,offset),min(375,offset+250),color='blue',alpha=0.06)
axis[0].axvspan(0,max(125,offset),color='brown',alpha=0.03)
axis[0].axvspan(min(375,offset+250),500,color='brown',alpha=0.03)
if n==0:
axis[0].legend(['f','g'])
axis[0].set_title('offset={}'.format(offset-125))
axis[1].plot(xcorr/(40*40),color='gray')
axis[1].plot(xcorr_rms,color='teal')
axis[1].axvline(offset,-100,350,color='maroon',lw=5,alpha=0.5)
if n == 0:
axis[1].legend(["$g \star f$","$g' \star f'$","offset"],loc='upper left')
plt.show()
关于python - Numpy Correlate 不提供偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49742593/
我有一个单词列表 L1,还有像 B1、B2..、Bn 这样的候选列表,所有列表的长度都相同。但它们没有相同的元素。列表不包含重复元素。 L1 仅与 B1、B2...Bn 中的一个最相似。我可以应用哪种
我有两个按出现次数排序的单词列表 排序是通过计算在不同时间点采样的两个文件中的每个单词生成的。 我想计算 spearman 以查看在第二个文件中找到第一个文件的顺序。 例如: 文件 a:1) 是 2)
我正在尝试绘制一个巨大的相关系数矩阵,目前,我的图如下所示: 请注意,某些单元格缺少相关系数(暂时忽略绘图缺乏对称性,除非您也恰好知道为什么会出现这种情况)。我相信这些值实际上并没有缺失,只是太小而无
假设我有 2 个字符串: AACCCGGAAATTTGGAATTTTCCCCAAATACG CGATGATCGATGAATTTTAGCGGATACGATTC 我想知道应该将第二个字符串移动多少,以便它
我需要在java中克隆excel correl()函数,我发现apache math commons库在org.apache.commons.math.stat.correlation包中有一些函数,
我正在尝试使用 Python 查看天文光谱,并且我正在使用 numpy.correlate 尝试找到径向速度偏移。我正在将我拥有的每个光谱与一个模板光谱进行比较。我遇到的问题是,无论我使用哪个光谱,
假设我销售的商品是互补品。我正在尝试找出不同销售日期的商品销售之间的相关性。 (因为我认为 item01 在 d-day 的销量可能会影响 item02~99 在 d+30 的销量) datafram
假设我有一个类似于下面的数据框,我将如何获得 2 个特定列之间的相关性,然后按“ID”列分组?我相信 Pandas 'corr' 方法可以找到所有列之间的相关性。如果可能的话,我还想知道如何使用 .a
当它重定向到我的应用程序时,在身份服务器身份验证之后,它给出 异常(exception):关联失败。 位置不明 现在因为我正在使用SPA。这条路线绝对没有。但问题是我如何定义一个。我应该在那里做什么。
我正在调整 PerformanceAnalytic 的 chart.Correlation() 函数。 chart.Corr = function (R, histogram = TRUE, meth
基于 tf-idf 矩阵计算皮尔逊相关系数以查看哪些项与其他项组合出现是否有意义?它在数学上是正确的吗? 我的输出是一个相关矩阵,每个单元格中的每个术语都有相关系数。 -------term1 ter
我在数据集中有两个 char 变量。我想计算两者之间的典型相关性。我的意思是我想从两个分类变量创建一些虚拟变量,并以这种方式计算规范相关性。在查看 proc cancorr 之后,如果不首先手动将分类
我有 2 组 x,y 坐标,我正在尝试确定它们的相关系数。一种方法是分别计算 x 值和 y 值的相关系数。然后取这些单独相关系数的算术平均值来估计 x,y 对的相关系数是否公平? 最佳答案 采用个体相
这是我的数据框。 df store_1 store_2 store_3 store_4 0 banana banana
在 Oracle SQL 中,您可以轻松地根据相关子查询中的 NOT EXISTS 条件进行更新。这对于根据另一个查询或 ID 列表进行更新很有用。 子查询机制在 Postgres 中是不同的...我
我想选择 N 个条件匹配关联表的记录。 我目前正在尝试这样完成 select v.id, name from visitors v left join trackings t on t.visitor
这个问题在这里已经有了答案: How to find the correlation between a group of values in a pandas dataframe column (
Matlab 的互相关函数 xcorr(x,y,maxlags) 有一个选项 maxlag,它返回滞后范围内的互相关序列 [ -maxlags:maxlags]。 Numpy 的 numpy.corr
是否有包含反函数的库? 作为项目的一部分,我目前正在研究测向算法。我正在使用巴特利特相关性。在 Bartlett 相关性中,我需要将已经是 3 次矩阵乘法(包括 Hermitian 转置)的分子除以作
我正在使用以下代码对 data_1 和 data_2 进行自动关联: result = numpy.correlate(data_1, data_2, mode='full') 结果也是时间序列。我还
我是一名优秀的程序员,十分优秀!