瑞利分布(Rayleigh Distribution)是一种连续概率分布,常用于描述信号幅度的统计特性,特别是在无线通信和信号处理领域。在Python中,可以使用scipy.optimize.curve_fit
函数来拟合瑞利分布曲线。
瑞利分布的概率密度函数(PDF)为: [ f(x; \sigma) = \frac{x}{\sigma^2} e^{-\frac{x^2}{2\sigma^2}} ] 其中,( x \geq 0 ),( \sigma ) 是分布的参数,决定了分布的宽度。
以下是一个使用scipy.optimize.curve_fit
函数拟合瑞利分布的示例代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# 定义瑞利分布的概率密度函数
def rayleigh_pdf(x, sigma):
return (x / (sigma ** 2)) * np.exp(- (x ** 2) / (2 * sigma ** 2))
# 生成一些模拟数据
np.random.seed(0)
sigma_true = 2.0
data = np.random.rayleigh(sigma_true, size=1000)
# 使用curve_fit拟合瑞利分布
popt, pcov = curve_fit(rayleigh_pdf, data, np.ones_like(data), p0=[1.0])
# 提取拟合参数
sigma_fit = popt[0]
# 绘制结果
x = np.linspace(0, 10, 100)
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')
plt.plot(x, rayleigh_pdf(x, sigma_fit), 'r-', label=f'Fit: σ={sigma_fit:.2f}')
plt.plot(x, rayleigh_pdf(x, sigma_true), 'b--', label=f'True: σ={sigma_true:.2f}')
plt.legend()
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.title('Rayleigh Distribution Fit')
plt.show()
curve_fit
函数需要一个初始猜测参数(p0
),如果选择不当可能导致拟合失败。通过上述方法和代码示例,可以有效地在Python中进行瑞利分布的拟合和分析。
领取专属 10元无门槛券
手把手带您无忧上云