var()
int32
入力の値の分散を返す は、引数として受け入れません。
data = [0,2,9,2,5,8,7,3,1,9,4,3,5,8,10,0,1,2,9,5,10];
>> var(double(data))
ans =
11.8905
>> var(int32(data))
Error using var (line 59)
First argument must be single or double.
のコードで型チェックを削除すると、次のvar
ようになります。
>> var(int32(data))
ans =
11.9000
これは、MATLAB では、整数と浮動小数点の間の減算の結果が整数であるため、精度が失われるためです (たとえば int32(2) - 2.1 == 0
、-0.1 ではなく)。
var()
では、エラー メッセージをスローする代わりに、整数入力を double にキャストしないのはなぜでしょうか?
scatterhist()
とは、入力としてfeedforwardnet()
受け入れられない関数の他の 2 つの例です。int32
とりわけ、これはプログラミング言語の相互運用性にとって厄介です。他の言語の整数は MATLAB で int32 に変換される可能性があるためです。また、意味的にはint32
、入力として持つことは意味があり、時には持つことよりもさらに意味がありますdouble
(たとえばfeedforwardnet()
、入力が隠れニューロンの数を指定し、自然数を持つことが期待される場合)。