我有绘制双变量高斯分布的工作代码。通过调整COV matrix以考虑特定变量来产生分布。具体来说,每个 XY 坐标都应用radius. 然后COV matrix按一个scaling因子调整 以扩大radiusinx-direction和收缩 in y-direction。其方向由 测量theta。输出表示为probability密度函数(PDF)。我已经标准化了这些PDF值。但是,我PDF为每一帧单独调用一个。因此,最大值会发生变化,因此每个帧的概率将被不同地转换。问题:使用@Prasanth 的建议。是否可以在绘图之前为每个帧创建标准化数组,然后绘制这些数组?下面是我目前用来标准化PDF单个帧的函数。normPDF = (PDFs[0]-PDFs[1])/max(PDFs[0].max(),PDFs[1].max())
2 回答

慕少森
TA贡献2019条经验 获得超9个赞
是否可以在绘图之前为每个帧创建标准化数组,然后绘制这些数组?
确实是可能的。在您的情况下,您可能需要在绘图之前在两个值之间重新调整数组,例如-1和。1因此最小值变为-1,最大值1和中间值相应地缩放。
您也可以选择0and1或任何东西作为最小值和最大值,但让我们选择-1and1以使中间值为0.
为此,请在您的代码中替换:
normPDF = (PDFs[0]-PDFs[1])/max(PDFs[0].max(),PDFs[1].max())
和:
renormPDF = PDFs[0]-PDFs[1]
renormPDF -= renormPDF.min()
normPDF = (renormPDF * 2 / renormPDF.max()) -1
这三行确保normPDF.min() == -1和normPDF.max() == 1。
现在在绘制动画时,图像右侧的轴不会改变。

牛魔王的故事
TA贡献1830条经验 获得超3个赞
PDFs[0].max()
您的问题是找到所有帧的最大值PDFs[1].max()
。
您为什么不在plotmvs
所有计划的帧上运行以找到绝对最大值PDFs[0]
,PDFs[1]
然后animation
使用这些绝对最大值运行您的绘图以标准化您的图?这样,colorbar
所有帧都将是相同的。
添加回答
举报
0/150
提交
取消