用MATLAB进行图像处理

图像处理的概念、算法和MATLAB

0.01是什么?

前几天我看了这两个数字:

$ 0.01美元

$ \压裂{5764607523034235}{576460752303423488}$

事实证明他们是非常很接近,相差只有千万亿分之五。

一个技术支持案万博1manbetx例在那天引起了我的注意,因为MATLAB creator克里夫硅藻土用MATLAB进行数值计算与MATLAB实验克里夫的实验室克里夫的角落)的回应,我一直很喜欢克莱夫的解释。

事实证明,技术支持万博1manbetx与理解浮点数的工作原理有关。克利夫的部分回应是:“1。E-2不是百分之一;它是最接近百分之一的浮点数。”

在大多数数值计算应用程序中使用的浮点数系统,包括MATLAB,是一个天才。它使我们能够成功地假装(大多数时候)我们在处理真实的数字(ℝ)。我们输入0.01,意思是1/100,没有想太多。

然而,偶尔了解一下浮点数系统实际上是ℝ的有限精度近似是有帮助的。这个系统中的每一个数都是以2为底数的分数乘以2的幂。正如有理数1/3在以10为底时没有有限长度的表示一样,有理数1/100在以2为底时也没有有限长度的表示。这意味着,当你在数值应用程序,如MATLAB或电子表格程序中输入0.01时,计算机存储的数字非常非常接近1/100,但并不完全等于它。

你可以通过使用十六进制格式,它使用十六进制表示法显示浮点数的底层字节:

格式十六进制一个= 0.01%恢复正常格式格式
一个= 3 f847ae147ae147b

你可以看到重复的数字模式ae147,最后一个十六进制数字,b,代表ae147四舍五入b.换句话说,这个数字不是1/100;它是一个二进制分数,乘以2的幂非常接近1/100。

我总是觉得使用符号数学工具箱来找出确切的浮点数的值。可以使用信谊函数与“f”选择。根据文档,使用此选项将返回一个符号数,该符号数是等于浮点值的精确有理数。

所以,这里是你键入0.01时得到的浮点数的真值的一种表示:

信谊(0.01,“f”
ans = 5764607523034235/576460752303423488

使用实时编辑器会显示得更好;以下是截图:

我建议你们看看克利夫氏07年7月——2014篇博客文章在浮点数。如果您的工作涉及到任何类型的数值计算,那么对它们有更多的了解将会很有帮助。




MATLAB®R2020a发布

|
  • 打印
  • 发送电子邮件

评论

请点击留下评论在这里登录到你的MathWorks帐户或创建一个新的。