相关二维矢量场
Correlation 2D vector fields
有多个 2D 流图,即矢量场,如何找到这些对之间的统计相关性?
问题:
不应该(?)调整 2 个形状为 (x,y,2) 的流程图:flow1, flow2
到 1D 向量和 运行
np.correlation_coeff(flow1.reshape(1,-1),flow2.reshape(1,-1))
因为 x,y 条目已连接。
绘制产量,仅用于可视化目的:
流 1:
流 2:
我正在考虑比较星等和方向。
理想情况下如何比较那些(余弦距离,...)?
如何比较向量场之间的协方差?
编辑:
我知道 np.corrcoef(flow1.reshape(2,-1), flow2.reshape(2,-1))
会 return 一个 4,4 相关系数矩阵,但发现解释起来不直观。
对于某些相似性度量,可能确实需要考虑域的空间结构。但是 相关系数 不会这样做:它在域的任何排列下都是不变的。例如,(0, 1, 2, 3, 4) 和 (1, 2, 4, 8, 16) 之间的相关性与 (1, 4, 2, 0, 3) 和 (2, 16) 之间的相关性相同, 4, 1, 8) 其中两个数组以相同的方式重新洗牌。
因此,相关系数将通过以下方式获得:
- 将两个数组居中,即减去它们的平均值。比如说,我们得到 FC1 和 FC2。
- 取内积 FC1 和 FC2 :这只是匹配条目的乘积之和。
- 除以内积FC1*FC1和FC2*FC2的平方根
示例:
flow1 = np.random.uniform(size=(10, 10, 2)) # the 3rd dimension is for the components
flow2 = flow1 + np.random.uniform(size=(10, 10, 2))
flow1_centered = flow1 - np.mean(flow1, axis=(0, 1))
flow2_centered = flow2 - np.mean(flow2, axis=(0, 1))
inner_product = np.sum(flow1_centered*flow2_centered)
r = inner_product/np.sqrt(np.sum(flow1_centered**2) * np.sum(flow2_centered**2))
这里的流量有一些正相关,因为我在流量 1 中包含了流量 2。具体来说,它是 1/sqrt(2)
附近的一个数字,受随机噪声的影响。
如果这不是您想要的,那么您不需要相关系数,而是其他一些相似性度量。
有多个 2D 流图,即矢量场,如何找到这些对之间的统计相关性?
问题:
不应该(?)调整 2 个形状为 (x,y,2) 的流程图:flow1, flow2
到 1D 向量和 运行
np.correlation_coeff(flow1.reshape(1,-1),flow2.reshape(1,-1))
因为 x,y 条目已连接。
绘制产量,仅用于可视化目的:
流 1:
我正在考虑比较星等和方向。
理想情况下如何比较那些(余弦距离,...)?
如何比较向量场之间的协方差?
编辑:
我知道 np.corrcoef(flow1.reshape(2,-1), flow2.reshape(2,-1))
会 return 一个 4,4 相关系数矩阵,但发现解释起来不直观。
对于某些相似性度量,可能确实需要考虑域的空间结构。但是 相关系数 不会这样做:它在域的任何排列下都是不变的。例如,(0, 1, 2, 3, 4) 和 (1, 2, 4, 8, 16) 之间的相关性与 (1, 4, 2, 0, 3) 和 (2, 16) 之间的相关性相同, 4, 1, 8) 其中两个数组以相同的方式重新洗牌。
因此,相关系数将通过以下方式获得:
- 将两个数组居中,即减去它们的平均值。比如说,我们得到 FC1 和 FC2。
- 取内积 FC1 和 FC2 :这只是匹配条目的乘积之和。
- 除以内积FC1*FC1和FC2*FC2的平方根
示例:
flow1 = np.random.uniform(size=(10, 10, 2)) # the 3rd dimension is for the components
flow2 = flow1 + np.random.uniform(size=(10, 10, 2))
flow1_centered = flow1 - np.mean(flow1, axis=(0, 1))
flow2_centered = flow2 - np.mean(flow2, axis=(0, 1))
inner_product = np.sum(flow1_centered*flow2_centered)
r = inner_product/np.sqrt(np.sum(flow1_centered**2) * np.sum(flow2_centered**2))
这里的流量有一些正相关,因为我在流量 1 中包含了流量 2。具体来说,它是 1/sqrt(2)
附近的一个数字,受随机噪声的影响。
如果这不是您想要的,那么您不需要相关系数,而是其他一些相似性度量。