久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 香農(nóng)編碼 求信源熵 編碼效率 c語言程序 [打印本頁]

作者: 李l潔    時間: 2017-6-4 09:37
標(biāo)題: 香農(nóng)編碼 求信源熵 編碼效率 c語言程序
#include<stdio.h>
#include<math.h> //使用各種數(shù)學(xué)函數(shù)
#define N 7
main()
{  
int i,j;
double p[N]={0},max,sum=0,R,H=0,K1=0,n;
double q[N]={0};//概率數(shù)組
int length[N];//碼長數(shù)組
double K[N]={0},I[N]={0};//求碼長的中間數(shù)組
int a[N][N]={0};//二進(jìn)制存儲數(shù)組
for (i=0;i<N;i++)
        scanf("%lf",&p[ i]);
printf("\n");
//判斷輸入概率是否正確
for(i=0;i<N;i++)
{
sum+=p[ i];
}
printf("概率之和=%lf\n",sum);
printf("\n");
if(sum==1.000000)
{
        printf("輸入概率p(i)\n");
for(i=0;i<N;i++)
{
printf("p[%d]=%lf\n",i,p[ i]);
}
printf("\n");
}
else
{printf("error\n");return 0;}
//將概率進(jìn)行排序操作
for(i=0;i<N;i++)
{
   for(j=i+1;j<N;j++)
   {
        if(p[ i]<p[j])
        {
        max=p[ i];
        p[ i]=p[j];
        p[j]=max;
        }
   }
}
//輸出排序后的數(shù)組
printf("排序:\n");
for(i=0;i<N;i++)
{
printf("p[%d]=%lf\n",i,p[ i]);
}
printf("\n");
//求累加概率
for(i=0;i<N;i++)
{
q[i+1]=q+p[ i];//從第二個開始加
}
//輸出累加概率數(shù)組
printf("累加概率:\n");
for(i=0;i<N;i++)
{
printf("q[%d]=%lf\n",i,q);
}
printf("\n");
//-logpi
for(i=0,j=0;i<N;i++,j++)
{
K[j]=-log(p[ i])/log(2);
}
printf("-logp(i): \n");
for(j=0;j<N;j++)
printf("-logp(%d)=%.2lf\n",j,K[j]);
printf("\n");
//求碼字長度
for(i=0,j=0;i<N;i++,j++)
{
      K[j]=-log(p[ i])/log(2);
                I[j]=K[j]+1;
                if(I[j]>(int)(I[j]))//香農(nóng)編碼的第三個步驟
                length[j]=(int)I[j];
                else length[j]=K[j];
                K1+=p[ i]*length[j];//求平均碼長
}
//輸出碼字長度
printf("碼長:\n");
for(i=0;i<N;i++)
{
printf("length[%d]=%d\n",i,length);
}
printf("\n");
//求累加概率的二進(jìn)制形式,即碼字
for(i=0;i<N;i++)
{
  for(j=0;j<length;j++)
  {
        q=q*2;
        if(q>=1)
        {
                q=q-1;
                a[j]=1;
        }
        else a[j]=0;
  }
}
//輸出碼字
printf("碼字:\n");
for(i=0;i<N;i++)
{
        for(j=0;j<length;j++)
                printf("%d",a[j]);
                printf("\n");
}
//求信源熵 編碼效率
for(i=0,j=0;i<N;i++,j++)
{
K[j]=-log(p[ i])/log(2);
H+=p[ i]*K[j];
n=H/K1;
}
printf("H(x)=%.2lf,n=%lf",H,n);
}







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品中文在线 | 国产一区不卡 | 毛片高清 | 国产精品永久免费视频 | 黄色片视频 | 成人精品鲁一区一区二区 | 国产精品18久久久久久久 | 欧美黄色一区 | 在线视频91| 日本超碰 | 亚洲精品国产一区 | 欧美日韩综合一区 | 欧美精品一区免费 | 91精品国产乱码久久久久久久 | 99视频免费播放 | 国产成年人小视频 | 亚洲综合一区二区三区 | 综合久久网 | 成人国产精品久久 | 日韩一二区在线 | 在线观看特色大片免费网站 | 日韩欧美高清 | 精品视频一二区 | 日日操视频 | 日日操视频 | 精品一二三区 | 蜜臀av日日欢夜夜爽一区 | 成人免费在线视频 | 国产精品福利网 | 中文久久 | 亚洲色综合 | 国产欧美一区二区三区在线看 | 97视频免费| 亚洲免费精品 | 日韩伦理一区二区 | 真人女人一级毛片免费播放 | 精品国产欧美一区二区三区成人 | 亚洲麻豆 | 国产一区999| 亚洲精品无 | 欧美一级在线视频 |