我试图在Matlab中使用linspace来获取小数字,例如从0.00003到0.1。
但是,如果我这样做,第一个数字/ bin不是0.00003,而是0,这不会给我一个平等的分布:
linspace(0.00003,0.1,10)
ans =
0.0000 0.0111 0.0222 0.0334 0.0445 0.0556 0.0667 0.0778 0.0889 0.1000
我意识到,如果我从0.0003或更大开始,那么它可以工作,但我怎样才能让它适用于较小的数字呢?
答案 0 :(得分:3)
这纯粹是由于MATLAB command window is displaying your data。
的方式显示数字的默认方式是文档所述的short
format:
短小数,小数点后4位数的固定小数格式
您的第一个数据点在小数点后的第5位数字之前没有非零数字,因此它只显示为0.0000
。
尝试将display format更改为显示更多有效数字的内容。您可以使用format
执行此操作。
format long g
此外,将来,如果您确实想要检查某些内容是否符合您的预期,请执行显式按值检查,而不仅仅是通过信任命令窗口中显示的内容。
limit = 0.000003
data = linsapce(limit, 0.1, 10);
% Check that the first datapoint is "equal" to what you expect
assert(abs(data(1) - limit) < eps)