溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

用PHP簡(jiǎn)單計(jì)算信源熵

發(fā)布時(shí)間:2020-05-30 13:33:41 來(lái)源:網(wǎng)絡(luò) 閱讀:547 作者:半邊書生123 欄目:web開發(fā)

要求:對(duì)于各定的信源計(jì)算其中各個(gè)字母以及空格出現(xiàn)的次數(shù),概率,信源熵!

        首先在大腦里構(gòu)思編輯過(guò)程要用到哪些具體的函數(shù)功能等等,然后自己現(xiàn)在紙上畫一畫,好的根據(jù)求信源熵的公式
E(X)=-p(xi)log2 p(xi)(i=1,2,..n) 可以得到如下編碼過(guò)程!
        <?php
//所給定字母
$String = 'qwertyuioplkjhgfdsazxcvbnmdgjdoqoiAznicguyfgvfpqopq   llxkzmjscnjd nvhfhuwrty';
//需要匹配的26個(gè)英文字母 
$ZhiMu  = 'abcdefghijklmnopqrstuvwxyz';
//匹配字母
preg_match_all("/[a-zA-Z]{1}/",$String,$arrAl);
$p=0;
$xin=0; 
substr_count($String," ");                            //空格個(gè)數(shù)
for( $i = 0; $i < strlen( $ZhiMu ); $i++ ) {          //循環(huán)遍歷26個(gè)字母, 也就是一個(gè)一個(gè)字母比對(duì)
     $num=0;
    $s = $ZhiMu{$i};                                  //得到要比對(duì)的字母
    $b = 0;                                           //初始化字母次數(shù)為0
    $gai=0;                                           //初始化概率為0
    $res=0;
    count($arrAl[0]);
    for( $j = 0; $j < strlen( $String ); $j++ ) {     //循環(huán)遍歷要比對(duì)的字符串, 也就是從頭開始一個(gè)一個(gè)比對(duì)
        if ( $s == $String{$j} ) {                    //如果兩個(gè)字母相同
            $b += 1;                                  //次數(shù)加上1
        }
    }
    $num=count($arrAl[0])+substr_count($String," ");
    $gai=$b/$num;                                     //各個(gè)字母出現(xiàn)的概率
    //輸出結(jié)果
    echo '</br>',$ZhiMu{$i}, '出現(xiàn)的次數(shù)是:', $b,'&nbsp&nbsp&nbsp概率:',$res=substr($gai, 0,6);  
}
$bla=0;
echo '</br>','&nbsp&nbsp&nbsp空格的個(gè)數(shù):',substr_count($String," "),'&nbsp&nbsp&nbsp概率:',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 '</br>',"字母跟空格個(gè)數(shù)之和:",$num,"<br/>",'信源熵:',"E(X)=",$xin=substr($p, 0,6);
編程圖片
    用PHP簡(jiǎn)單計(jì)算信源熵

結(jié)果:

   用PHP簡(jiǎn)單計(jì)算信源熵

      以上是一個(gè)簡(jiǎn)單的程序,大家也可以加入數(shù)據(jù)庫(kù),對(duì)標(biāo)點(diǎn)符號(hào),漢字,特殊字符進(jìn)行計(jì)算,也可以設(shè)置成表單輸入!
       我的演示就到這里,有什么不足還請(qǐng)大家提出!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI