我使用Matlab历史记录功能从Bloomberg检索数据,似乎Matlab将4个小数位设置为默认值。这有时与我从Excel中提取的数据不一致。例如:
这是Matlab代码:
[d, sec] = history(c, 'TY1 Comdty', 'PX_LAST', '1982-5-6', '1982-5-6')
我从Matlab和Excel得到了不同的结果:
Date 5/6/1982
Excel 72.96875
Matlab 72.9688
有没有办法设置历史记录功能的属性并得到72.96875而不是72.9688?
答案 0 :(得分:2)
没有像Excel那样的解决方案来显示所需格式的数字。
在Matlab中,您可以将format long
设置为包含15个小数位,将format short
设置为包含4位小数。这就是你所拥有的一切。
尽管如此,还有两个解决方法。第一个使用round
(1) format long %define 15 digit precision
xround = @(x,d) round(x/d)*d; %rounding function with d format
a = xround(72.96875, 0.00001) %rounding your value by calling 'xround' function
它给出了
a = 72.968750000000000
第二种解决方法是打印一个字符串(不是标量)
(2) sprintf('%.5f', 72.96875)
它给出了
ans = 72.96875
要将Excel与Matlab匹配,您可以输入
[d, sec] = history(c, 'TY1 Comdty', 'PX_LAST', '1982-5-6', '1982-5-6');
d = xround(d, 0.00001);
答案 1 :(得分:1)
使用format
命令将显示设置为所需的有效位数:http://www.mathworks.co.uk/help/matlab/ref/format.html