比较数值
汪东城本周的选择numcmp通过卡洛斯阿德里安·巴尔加斯·阿奎莱拉。
一些(很多)你可能听说过浮点数学问题,甚至可能已经阅读这个引用。即使在我们的博客,我们中的许多人都写过浮点运算。
这是一个简短的示例,说明了这一点。
x = 2 - 1/3 - 1/3 - 1/3
x = 1.0000
但是如果我们比较结果的理论回答,我们得到他们不平等。
tf = isequal (x, 1)
tf = 0
如果我们显示x以十六进制格式检查完整的精度,
格式十六进制x
x = 3 ff0000000000001
另一方面,值“1”的十六进制表示
1
ans = 3 ff0000000000000
最后一点注意的区别。
因此,通常这不是一个良好的实践做一个直接比较的浮点运算。相反,你可能会做这样的事情。
格式短tf = abs (x - 1) < =每股收益(1)
tf = 1
卡洛斯的numcmp可以让你比较两个值在一个特定的公差。你可以选择从一组不同的比较,如' = = ',' ~ =”、“<”、“>”,等等。你还可以选择宽容,指定一个正整数托尔代表10 ^ (tol)。
tf = numcmp (x,“= =”1 10)% 1平台以及公差
tf = 1
谢谢你的条目,卡洛斯。一个评论。我喜欢它是矢量化,但你使用repmat来匹配输入的大小。你甚至有一张便条,上面写着“避免使用bsxfun”。我建议使用bsxfun。更高效的速度和内存,特别是对于较大的数据。
评论
- 类别:
- 选择
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。