matlab - 使用 Matlab 计算矩阵的熵

标签 matlab

给定一个维度为 m x n 的矩阵 A,并且矩阵中的条目位于 [0,1]
例如

A = [0.5 0   0  0.5 0
     0   0.5 0  0   0.5
     1   0   0  0   0]

我想计算sum(sum(a_ij log(a_ij))),其中a_ij是第i行,<矩阵 A 中的第 j 列条目。由于矩阵中存在 0 个条目,因此我总是得到 NAN 结果。

我如何仅考虑非零条目来计算sum(sum(a_ij log(a_ij))) [矩阵的熵]。

最佳答案

要仅考虑矩阵的特定元素,您可以使用逻辑索引。例如,如果您只想选择 A 的非零条目,则可以使用 A(A~=0)。因此,对于您的问题,解决方案可以写为:

sum(A(A~=0).*log(A(A~=0)));

编辑:哇,这是某种巧合,我在发布此内容后刚刚看到您的评论。嗯,很高兴您自己解决了这个问题。

关于matlab - 使用 Matlab 计算矩阵的熵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640046/

相关文章:

algorithm - 用于取证应用的图像处理算法

image - 如何用Matlab连接图像中的断开点?

python - numpy 与 mlabwrap 的 matlab 接口(interface)

string - 在 Matlab 中对图像名称文件进行排序?

image - 8 位彩色图像矩阵表示

java - 如何在 Mac 版本的 MatLab 中使用命令 xlswrite?

windows - 在matlab中监控内存

optimization - 相同代码的 MATLAB 速度差异

在MATLAB中运行的Python程序无法导入pygame

matlab - Matlab 中的多维数组乘法