c 语音实现信源熵的的计算代码
时间: 2023-06-09 10:03:47 浏览: 75
c语言实现信源熵的计算
以下是一个简单的用 C 语言实现信源熵计算的代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int frequency[26] = {0}; // 存储每个字母出现的频率
char message[100]; // 存储输入的消息
double entropy = 0.0; // 存储信源熵
printf("请输入一个只包含小写字母的消息:");
fgets(message, 100, stdin); // 从标准输入读取消息
// 统计每个字母出现的频率
for (int i = 0; message[i] != '\n' && i < 100; i++) {
frequency[message[i] - 'a']++;
}
// 计算信源熵
for (int i = 0; i < 26; i++) {
if (frequency[i] > 0) {
double probability = (double) frequency[i] / strlen(message);
entropy -= probability * log2(probability);
}
}
printf("消息的信源熵为:%f\n", entropy);
return 0;
}
```
对于一段消息,首先我们用数组 `frequency` 统计每个字母出现的频率。接着,对于每个出现过的字母,我们计算其概率,并累加对信源熵的贡献。最后,输出计算得到的信源熵即可。
阅读全文