matlab 中 eps 的分析
eps(a)是|a|与大于|a|的最小的浮点数之间的距离,距离越小表示精度越高。默认a=1:
这里直接在matlab中输入:eps == eps(1)(true).
我们知道浮点数其实是离散的,有限的,而且间隔是不均匀的。我们可以说一个数旁边的数是什么,
而它们之间的距离就反应了其精度。越靠近0,数和数之间就越密集,精度就越高。
下面引用百度知道中 greatdju 的详细回答:
首先,eps不是matlab所能表示的最小的正数。可以试试eps和eps/2,如果eps真的是最小的正数,
那么eps/2就应该四舍五入到0或eps,但实际上却能精确表示出来。正确的说法是eps=eps(1),是1的精度。
也就是说matlab无法表示介于1和1+eps之间的数,这些数将被四舍五入到1或1+eps。比如1+0.3*eps被舍入到1,
而1+0.7*eps被舍入到1+eps。可以用下面的语句进行验证:
1+0.3*eps==1%true
1+0.7*eps==1%false
1+0.7*eps==1+eps%true
正如前面所说,对浮点数而言,越靠近0,精度就越高。因此2的精度就比1的精度要低。
事实上,matlab无法区分介于2和2+2*eps之间的数。也就是说eps(2)=2*eps,下面是验证:
2+eps==2%true,说明matlab无法区分2和2+eps
1+eps==1%false,说明matlab可以区分1和1+eps,因此1的精度比2高
0的精度是最高的,也就是说eps(0)才是matlab所能表示的最小的正数。它和eps相比相差了300多个数量级,
eps和它相比大的简直是个天文数字。 好了看了上面的分析应该知道怎么回事了,不过知道了eps是什么,但是对于为什么精度这样变化,我提出我的理解:
这里的精度跟数字在电脑的存储方式有关,计算机的存储位数是一定的,可是表示 1 只要一位,表示 2 要两位数,
比如:eps(2)==eps(3) %true; 另外:eps(4) = eps(7) != eps(8)...
对照上边的例子:2+eps==2%true 而 2 + eps(2) == 2 %false...这里不写太多例子了,分析下这个例子,
第一个eps默认为eps(1)加上2以后,由于表示的位数限制,不能表示到eps(1)的精度,所以小数部分直接溢出
了,而第二个等式在表示精度范围内所以小数部分不会略去,还不懂的话,我再给大家看一下:
3 + eps(2) == 3 %false; 4 + eps(2) == 4 %ture.....不知道懂了没有,自己再体会一下。。。
matlab 中 eps 的分析的更多相关文章
- [转载]Matlab中fft与fftshift命令的小结与分析
http://blog.sina.com.cn/s/blog_68f3a4510100qvp1.html 注:转载请注明出处——by author. 我们知道Fourier分析是信号处理里很重要的技术 ...
- MATLAB中FFT的使用方法
MATLAB中FFT的使用方法 说明:以下资源来源于<数字信号处理的MATLAB实现>万永革主编 一.调用方法X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X, ...
- matlab中的xcorr 自相关函数
转载自 http://blog.163.com/to_be_myself/blog/static/176060227201101762159227/ Matlab中用于计算自相关函数的指令是xcorr ...
- 【caffe-windows】 caffe-master 之Matlab中model的分类应用
此篇讲述在matlab中,如何将训练好的model用于图像分类.将以mnist为例,主要用到caffe-master\matlab\demo 下的classification_demo.m ,可参考我 ...
- Matlab中rand('state',sum(clock))解析
一.问题来源 来自于一份PSO代码,PSO中需要初始化粒子位置和速度. 二.问题探究 众所周知,Matlab中的rand()函数产生的是伪随机数,但一般用来也可以接受.但是,如果我们知道伪随机数的初始 ...
- 关于MATLAB中的tic toc的问题
关于MATLAB中的tic toc的问题 其一) MATLAB实际单位时间计时函数的具体应用,在编写程序时,经常需要获知代码的执行实际时间,这就需要在程序中用到计时函数,matlab中提供了以下三种方 ...
- MATLAB中的分类器
MATLAB中的分类器 目前了解到的MATLAB中分类器有:K近邻分类器,随机森林分类器,朴素贝叶斯,集成学习方法,鉴别分析分类器,支持向量机.现将其主要函数使用方法总结如下,更多细节需参考MAT ...
- Matlab 中movie函数的使用
MATLAB中,创建电影动画的过程分为以下四步: step1:调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一 ...
- Matlab中调用VS编译的exe文件并传递变量 的方法
经历::在网上找了很多方法,都没有实现在matlab中调用vs的exe文件并且能够传递变量参数,一些小细节花费了自己很多时间,比喻忽略了一些空格! 网上很多的方法都是纯粹复制别人的方法,自己都没有去 ...
随机推荐
- TextView属性android:ellipsize="marquee"不生效的解决办法
最近自己在写自己的第一个app,过程中遇到了这个问题,查了不少帖子,经过尝试发现,这种问题一般分为两类: 1. TextView的Text值赋值后不更改,很多帖子上说如下写法就可以生效: <Te ...
- PHP 二维数组根据某个字段排序
二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort 对数组的值按 ...
- docker搭建Hadoop集群
一个分布式系统基础架构,由Apache基金会所开发. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储. 首先搭建Docker环境,Docker版本大于1.3. ...
- 开源Unity小插件CheatConsole
我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...
- java中的throw与throws的区别
什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...
- Swift -运算符和循环结构
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #4dbf56 } p.p2 { margin: 0.0px 0. ...
- 我的Python学习之路 Python的初识与准备工作
注:文笔不好,不喜勿喷,当个段子看看就好 一.初识Python 第一次听到Python是在2016年大概暑假 时候(即将大三),因为对黑客技术的蜜汁热爱(虽然自己并不会),在玄魂大大的公众微信号中看到 ...
- 利用Photoshop修改图片以达到投稿要求
摘自:http://www.dxy.cn/bbs/thread/8602152#8602152 利用Photoshop修改图片以达到投稿要求 软件版本为Photoshop CS V8.0.1(中文版) ...
- bzoj3123: [Sdoi2013]森林
题面传送门 复出的第一道题.. md就遇到坑了.. 简单来说就是可持久化线段树+启发式合并啊.. 感觉启发式合并好神奇好想学 每一次建边就暴力合并,每一个节点维护从根到它的权值线段树 按照题面的话最省 ...
- js排序算法总结——冒泡,快速,选择,插入,希尔,归并
相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法. 一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放 ...