大佬们,怎么让C语言实现信息熵计算
可以输入任意的信源数量,以及对应数量的空间概率,从而求得任意的信息熵。 不知道 #include <math.h>#include <stdio.h>
#define LOG_N 2
float self_info2(float p[],int *r);
int main(){
int input_number=0;
int output_number;
int *r;
float p;
float H=0;
printf("input X number:\n");
scanf("%d",&input_number);
for(int i=0;i<(input_number);i++)
{
printf("input P(x):\n");
scanf("%f",&p);
*r=i;
H+=self_info2(p,r);
printf("return %f\n",self_info2(p,r));
}
printf("H(x) result is:%f",H);
return 0;
}
//求以N为底的,单个概率P的自信息
float self_info2(float p[],int *r){
int i;
i=*r;
return -p*(log(p)/log(LOG_N));
}
这样
页:
[1]