2

我正在使用 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?

4

2 回答 2

2

没有像 Excel 那样好的解决方案来显示所需格式的数字。

在 Matlab 中,您可以设置format long15 位小数和format short4 位小数。这就是你所拥有的。

不过,有两种解决方法。第一种用途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);
于 2013-09-03T16:37:26.697 回答
1

使用format命令将显示设置为所需的有效位数: http: //www.mathworks.co.uk/help/matlab/ref/format.html

于 2013-09-03T15:39:28.383 回答