我有一个二维多变量高斯分布,它在某处与一条直线相交。现在我想沿着这条线计算二维高斯分布。如果我没有弄错的话,这应该是一个简单的一维高斯分布,在一个坐标系(我们称之为s)中沿着直线运动?我该怎么计算呢?具体来说,我正在使用Python/Numpy。一般来说,我正在研究卡尔曼滤波器。感谢您的任何帮助!
os8fio9y1#
为了得到二元正态分布的概率密度函数的限制,可以使用它的定义scipy.stats:
scipy.stats
import numpy as np from scipy.stats import multivariate_normal as BN import plotly.graph_objects as go meanv=[0.5, -0.2] Sigma=np.array([[1.5, 0.6], [0.6, 1.75]]) rv = BN(meanv, Sigma) x = np.linspace(meanv[0]-3*np.sqrt(Sigma[0,0]), meanv[0]+3*np.sqrt(Sigma[0,0]), 100) y= np.linspace(meanv[1]-3*np.sqrt(Sigma[1,1]), meanv[1]+3*np.sqrt(Sigma[1,1]), 100) xv, yv = np.meshgrid(x,y) pos = np.dstack((xv, yv)) z= rv.pdf(pos) fig=go.Figure(go.Surface(x=x, y=y, z=z, colorscale=[[0, '#90ee90'], [1.0, '#90ee90']], showscale=False)) X= np.linspace(-2, 2, 150) Y= 2*X-0.7 Z=rv.pdf(np.dstack((X,Y))) #Restriction of pdf to the given line fig.add_scatter3d(x=X, y=Y, z=Z+0.001, mode="lines", line_width=2, line_color="black") fig.update_layout(width=600, height=500, font_size=11, scene_camera_eye=dict(x=-1.6, y=1.6, z=1))
请注意,必须提供二元正态分布的均值向量及其协方差矩阵Sigma。rv = BN(meanv, Sigma)定义具有给定均值和协方差的分布的随机变量,并且rv.pdf是其概率密度函数。该线被认为包括在平面z=0内,使得它与pdf不非常接近零的域相交。
rv = BN(meanv, Sigma)
1条答案
按热度按时间os8fio9y1#
为了得到二元正态分布的概率密度函数的限制,可以使用它的定义
scipy.stats
:请注意,必须提供二元正态分布的均值向量及其协方差矩阵Sigma。
rv = BN(meanv, Sigma)
定义具有给定均值和协方差的分布的随机变量,并且rv.pdf是其概率密度函数。该线被认为包括在平面z=0内,使得它与pdf不非常接近零的域相交。