我正在研究C ++中的频谱感知,直到现在我的问题是如何估计噪声的确切值。所以我做了数据的直方图,我想在这个直方图上拟合高斯分布,然后我得到了这个拟合分布的平均值,就像在matlab中[均值,方差] = normfit(x)。
vec noise::gauss_fit(vec spectrum_sensed,int Nfft)
{
Histogram<double> hist;
hist.setup(min(spectrum_sensed),max(spectrum_sensed),Nfft);
// now I need to fit this histogram by a normal distribution "Normal"
// and finally I get the mean of this distribution: normal.get_setup();
}
提前感谢您的帮助!
答案 0 :(得分:1)
正态分布使这很容易:
mean = sum(spectrum_sensed)/N
variance = sum((spectrum_sensed-mean)^2)/N
您不适合直方图,适合数据。在正态分布的情况下,由于一切都是分析性的,所以没有任何拟合。