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()
是另外两个不接受int32
作为输入的函数的示例。除此之外,这对于编程语言的互操作性来说很烦人,因为其他一些语言中的整数可能会在 MATLAB 中转换为 int32。此外,在语义上,int32
作为输入是有意义的,有时甚至比拥有更有意义double
(例如,feedforwardnet()
在输入指定隐藏神经元数量的情况下,我们期望有一个自然数)。