Python Numpy中是否有和Matlab一样的histogram函数?
坑
1、python
y,x = np.histogram(arrCount, bins=np.linspace(0, 100, 20))
2、python
bins = 100 #设置成100bin
# px = np.histogram(x, bins=bins,range=(sigMin, sigMax))[0]/length #bins代表划分后的最小单元个数,可以理解成信号的分辨率;range代表信号的范围
# bins代表划分后的最小单元个数,可以理解成信号的分辨率;
# 如果加上range之后,结果和matlab的pxp = histogram(x, bins);px = pxp.Values/length; 差异很大,所以先不加range了
px = np.histogram(x, bins=bins)[0] / length
hx = - np.sum(px * np.log(px+1e-8)) #随机变量X的边缘熵
# py = np.histogram(y, bins=bins,range=(sigMin, sigMax))[0]/length
py = np.histogram(y, bins=bins)[0] / length #不加range使得结果跟matlab尽可能地相近;
hy = - np.sum(py * np.log(py+1e-8))
#pxy = np.histogram2d(x,y,bins=bins,range=[[sigMin, sigMax], [sigMin, sigMax]])[0]/length
pxy = np.histogram2d(x, y, bins=bins )[0] / length
hxy = - np.sum(pxy * np.log(pxy+1e-8))
3、matlab
function ixy = calMIMatlab(x,y)
length = size(x,2);
bins = 100 ;
pxp = histogram(x, bins);
px = pxp.Values/length;
hx = - sum(px .* log(px+1e-8));
pyp = histogram(y,bins);
py1 = pyp.Values/length;
hy = - sum(py1 .* log(py1+1e-8));
pxyp = histogram2(x,y,bins);
pxy = pxyp.Values/length;
hxy = - sum(sum(pxy .* log(pxy+1e-8)));
ixy = hx + hy - hxy;
end