エラー発生について

7 visualizaciones (últimos 30 días)
sz
sz el 28 de Oct. de 2021
Editada: Atsushi Ueno el 28 de Oct. de 2021
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があるとエラーが出るのだと思うのですが、
どのようにすればエラーが起きず普通に計算出来るかが分からない為、教えていただきたいです。

Respuesta aceptada

Hernia Baby
Hernia Baby el 28 de Oct. de 2021
-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

Más respuestas (0)

Categorías

Más información sobre Dictionaries en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!