用PHP简单计算信源熵-创新互联
要求:对于各定的信源计算其中各个字母以及空格出现的次数,概率,信源熵!
首先在大脑里构思编辑过程要用到哪些具体的函数功能等等,然后自己现在纸上画一画,好的根据求信源熵的公式
E(X)=-p(xi)log2 p(xi)(i=1,2,..n) 可以得到如下编码过程!
//所给定字母
$String = 'qwertyuioplkjhgfdsazxcvbnmdgjdoqoiAznicguyfgvfpqopq llxkzmjscnjd nvhfhuwrty';
//需要匹配的26个英文字母
$ZhiMu = 'abcdefghijklmnopqrstuvwxyz';
//匹配字母
preg_match_all("/[a-zA-Z]{1}/",$String,$arrAl);
$p=0;
$xin=0;
substr_count($String," "); //空格个数
for( $i = 0; $i < strlen( $ZhiMu ); $i++ ) { //循环遍历26个字母, 也就是一个一个字母比对
$num=0;
$s = $ZhiMu{$i}; //得到要比对的字母
$b = 0; //初始化字母次数为0
$gai=0; //初始化概率为0
$res=0;
count($arrAl[0]);
for( $j = 0; $j < strlen( $String ); $j++ ) { //循环遍历要比对的字符串, 也就是从头开始一个一个比对
if ( $s == $String{$j} ) { //如果两个字母相同
$b += 1; //次数加上1
}
}
$num=count($arrAl[0])+substr_count($String," ");
$gai=$b/$num; //各个字母出现的概率
//输出结果
echo '',$ZhiMu{$i}, '出现的次数是:', $b,'   概率:',$res=substr($gai, 0,6);
}
$bla=0;
echo '','   空格的个数:',substr_count($String," "),'   概率:',substr(substr_count($String," ")/$num, 0,6);
$bla=substr(substr_count($String," ")/$num, 0,6);
$p=-(($gai)*(log($gai)/log(2))+log($bla)/log(2));
echo '',"字母跟空格个数之和:",$num,"
",'信源熵:',"E(X)=",$xin=substr($p, 0,6);
编程图片:
结果:
以上是一个简单的程序,大家也可以加入数据库,对标点符号,汉字,特殊字符进行计算,也可以设置成表单输入!
我的演示就到这里,有什么不足还请大家提出!
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:用PHP简单计算信源熵-创新互联
分享地址:http://cdiso.cn/article/dpeoee.html