数值优化MATLAB后的“精确”数值

时间:2013-06-05 07:19:15

标签: matlab optimization format double

我的代码存在以下问题。我一直在尝试使用我在网上找到的其他帖子,例如this one。但他们没有找到我想要的东西。

我的代码使用MATLAB Exchange函数,该函数优化了一个重要的数字值,在点之后有32位数,例如

0.59329669191989231613604260928696

可以找到优化功能here,并将其称为fminsearchbnd 优化函数计算它并将值存储在我在代码中使用的变量中。为了不在每次我想要存储变量时执行优化(我尝试在* .mat和字符串形式的标签上。 但是当我检索它时,MATLAB将它转换为双精度变量'cut'在14之后的所有数字。但是我需要所有这些因为它们很重要!

是否可以使用vpa()读取类似数字的数字,因为具有符号值我无法做任何事情。

非常感谢任何帮助。 感谢

编辑: fminsearchbnd给了我class(bb) - > double当我想在工作区看到它时0.586675392365899。但是当我设置formatSpec = '%.32f\n';因为我想查看优化给我的所有数字时,请输入set(editLabel,'String',num2str(bb,formatSpec))

1 个答案:

答案 0 :(得分:2)

您正在尝试存储/使用无法在IEEE754 64-bit double-precision floating point number中准确表示的数字。

我不确定你是如何在不使用vpa()的情况下得到这个数字的,因为64位double是Matlab的最大精度......

您可以使用Ben Barrowes的multiple precision toolbox,也可以使用来自FEX的John d'Errico的HPF。如果要将文件存储/加载到文件中,则必须将/构造转换为/从字符串构建。

但我必须同意约翰在那里的评论:

  

事实上,大部分时间,如果你不能用双倍,你   做错了什么

所以... 为什么确实是那些32位或更多位数重要?