エラー発生について

6 次查看(过去 30 天)
sz
sz 2021-10-28
编辑: Atsushi Ueno 2021-10-28
A = [0.15 0.14 0 0.1 0.19 0.1 0.23 0.09];
SCE = sum(-1.*A.*log2(A))
SCE = NaN
このような計算をするとSCE部分がNaNというのが出てきてエラーになってしまいます。
Aの合計を1にするようにしていて
A = [0.15 0.14 0.1 0.1 0.19 0.1 0.13 0.09];
SCE = sum(-1.*A.*log2(A))
SCE = 2.9548
にすると普通に計算出来るのでAに0があるとエラーが出るのだと思うのですが、
どのようにすればエラーが起きず普通に計算出来るかが分からない為、教えていただきたいです。

采纳的回答

Hernia Baby
Hernia Baby 2021-10-28
-1*0*log2(0)が不定形のため、NaNが返されます。
-1*0*log2(0)
ans = NaN
そして sum 関数ではNaNが入るとNaNで返してしまいます。
オプションでNaNがある部分を無視する方法が解決案として挙げられます。
A=[0.15, 0.14, 0, 0.1, 0.19, 0.1, 0.23, 0.09]
A = 1×8
0.1500 0.1400 0 0.1000 0.1900 0.1000 0.2300 0.0900
SCE = sum(-1.*A.*log2(A))
SCE = NaN
SCE1 = sum(-1.*A.*log2(A),'omitnan')
SCE1 = 2.7276

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Dictionaries 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!