写一个输入概率求信息熵的java代码
时间: 2023-05-21 15:03:29 浏览: 77
以下是一个简单的 Java 代码,用于计算输入概率并求出信息熵:
import java.util.Scanner;
public class EntropyCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入概率值,以空格分隔:");
String[] input = scanner.nextLine().split(" ");
double[] probabilities = new double[input.length];
double entropy = 0;
for (int i = 0; i < input.length; i++) {
probabilities[i] = Double.parseDouble(input[i]);
entropy += probabilities[i] * Math.log(probabilities[i]) / Math.log(2);
}
entropy = -entropy;
System.out.println("信息熵为:" + entropy);
}
}
请注意,此代码仅用于演示目的,可能需要进行更多的错误检查和输入验证。
相关问题
用java写一个求信息熵的代码
以下是一个用 Java 编写的求信息熵的代码示例:
```java
import java.util.HashMap;
import java.util.Map;
public class EntropyCalculator {
public static void main(String[] args) {
String input = "hello world";
double entropy = calculateEntropy(input);
System.out.println("Entropy of \"" + input + "\" is " + entropy);
}
public static double calculateEntropy(String input) {
Map<Character, Integer> charCounts = new HashMap<>();
for (char c : input.toCharArray()) {
charCounts.put(c, charCounts.getOrDefault(c, 0) + 1);
}
double entropy = 0.0;
for (int count : charCounts.values()) {
double probability = (double) count / input.length();
entropy -= probability * Math.log(probability) / Math.log(2);
}
return entropy;
}
}
```
这个代码使用了一个 `Map` 来统计输入字符串中每个字符出现的次数,然后计算每个字符出现的概率,并根据信息熵的公式计算出总的信息熵。在这个例子中,输入字符串是 "hello world",输出结果是 3.180832987755223。
给一个求图像信息熵的matlab代码
以下是一个求图像信息熵的 Matlab 代码:
```matlab
function entropy = image_entropy(img)
% img: 输入的图像矩阵
% entropy: 图像信息熵
% 将图像转换为灰度图像
if size(img, 3) == 3
img = rgb2gray(img);
end
% 统计每个像素值出现的次数
counts = imhist(img);
% 计算每个像素值出现的概率
probs = counts / sum(counts);
% 计算信息熵
entropy = -sum(probs .* log2(probs));
end
```
希望对你有帮助!