首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算高斯峰位置的center_of_mass

计算高斯峰位置的center_of_mass
EN

Stack Overflow用户
提问于 2013-08-26 00:16:15
回答 1查看 4.4K关注 0票数 4

我试图用ndimage.measurements.center_of_mass计算高斯二维分布的峰值位置,发现质量中心从峰值中心移动:

代码语言:javascript
复制
import numpy as np
from scipy import ndimage
from scipy import stats
import matplotlib.pyplot as plt

x = np.linspace(-1,1,100)
xv, yv = np.meshgrid(x, x)
r = np.sqrt((xv-0.2)**2 + (yv)**2)
norm2d = stats.norm.pdf(r)
com = ndimage.measurements.center_of_mass(norm2d)
plt.imshow(norm2d, origin="lower")
plt.scatter(*com[::-1])
plt.show()

在不使用最小二乘优化程序的情况下,如何粗略地计算含噪2D高斯分布的峰值位置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-26 02:27:04

如果使用顶部的xx%像素,则可以获得正确的结果:

代码语言:javascript
复制
hist, bins = np.histogram(norm2d.ravel(), normed=True, bins=100)
threshold = bins[np.cumsum(hist) * (bins[1] - bins[0]) > 0.8][0]
mnorm2d = np.ma.masked_less(norm2d,threshold)
com = ndimage.measurements.center_of_mass(mnorm2d)
plt.imshow(norm2d, origin="lower")
plt.scatter(*com[::-1])
plt.show()

结果:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18435003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档