给定一个维度为 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/