创建一个不考虑欧氏距离的圆角数组 python
Create a circle array of angles to not consider euclidean distance python
我正在尝试使用以下代码创建转换矩阵:
transition_matrix[0:720,:] = (1 / np.sqrt(2 * np.pi * sigma_n2)) * np.exp(-( np.abs(eventspace_psi_i_min_1 - eventspace_psi_i) )**2 / (2 * sigma_n2))
后面的公式就是高斯分布。
事件空间是 720 个元素的数组,所有元素的角度都应该从 0,0.5,...,359.5 开始。
知道 0° 和 359.5° 有多接近,一个非零值应该出现在这个计算的转换矩阵中。但是,由于欧式距离,它 returns 0.
我尝试切换事件空间并使它们成为:0, 0.5,...,180,179.5,...,0,5 但它不起作用,因为又是欧基德距离,因为它会给出非-考虑 90° 时为零,等效于 270°(在这种情况下为 90)。
为了使其正常运行,我需要在圆圈中显示角度值,因为它们通常会出现在图表中。
任何人都可以帮助我了解如何做到这一点吗?
我有点困惑,因为你使用的是度数,而不是弧度,但是如果你想要 angular 与 属性 0 ≤ δ ≤ 180
的距离,你可以这样做
def distance(φ, θ):
from numpy import abs
δ = abs(φ-θ) # 0 ≤ δ < 360
δ[δ>=180] -= 360 # -180 ≤ δ < 180
return abs(δ) # 0 ≤ δ ≤ 180
编辑
你的角度在 [0, 360) 区间内,但情况并非总是如此,所以最好将它们归一化,此外,如果参数都是标量,则会引发 TypeError
,所以它是最好将 360 的减量封装到 try
except
子句中。
def distance(φ, θ):
from numpy import abs
δ = abs(φ%360 - θ%360) # 0 ≤ δ < 360
try:
δ[δ>=180] -= 360 # -180 ≤ δ < 180
except TypeError:
if δ >= 180 : δ -= 360
return abs(δ) # 0 ≤ δ ≤ 180
我正在尝试使用以下代码创建转换矩阵:
transition_matrix[0:720,:] = (1 / np.sqrt(2 * np.pi * sigma_n2)) * np.exp(-( np.abs(eventspace_psi_i_min_1 - eventspace_psi_i) )**2 / (2 * sigma_n2))
后面的公式就是高斯分布。
事件空间是 720 个元素的数组,所有元素的角度都应该从 0,0.5,...,359.5 开始。 知道 0° 和 359.5° 有多接近,一个非零值应该出现在这个计算的转换矩阵中。但是,由于欧式距离,它 returns 0.
我尝试切换事件空间并使它们成为:0, 0.5,...,180,179.5,...,0,5 但它不起作用,因为又是欧基德距离,因为它会给出非-考虑 90° 时为零,等效于 270°(在这种情况下为 90)。
为了使其正常运行,我需要在圆圈中显示角度值,因为它们通常会出现在图表中。
任何人都可以帮助我了解如何做到这一点吗?
我有点困惑,因为你使用的是度数,而不是弧度,但是如果你想要 angular 与 属性 0 ≤ δ ≤ 180
的距离,你可以这样做
def distance(φ, θ):
from numpy import abs
δ = abs(φ-θ) # 0 ≤ δ < 360
δ[δ>=180] -= 360 # -180 ≤ δ < 180
return abs(δ) # 0 ≤ δ ≤ 180
编辑
你的角度在 [0, 360) 区间内,但情况并非总是如此,所以最好将它们归一化,此外,如果参数都是标量,则会引发 TypeError
,所以它是最好将 360 的减量封装到 try
except
子句中。
def distance(φ, θ):
from numpy import abs
δ = abs(φ%360 - θ%360) # 0 ≤ δ < 360
try:
δ[δ>=180] -= 360 # -180 ≤ δ < 180
except TypeError:
if δ >= 180 : δ -= 360
return abs(δ) # 0 ≤ δ ≤ 180