matlab图形坐标点显示精度设置方法
- 格式:doc
- 大小:50.00 KB
- 文档页数:2
matlab 小数精度
在MATLAB中,可以使用format命令来控制小数的显示精度。
默认情况下,MATLAB会使用一般格式(short)显示小数,即保留四位有效数位。
以下是一些常用的格式选项:
1. short: 显示小数的一般格式,保留四位有效数位。
2. long: 显示小数的完整格式,保留15位有效数位。
3. shortE: 使用科学计数法显示小数,保留四位有效数位。
4. longE: 使用科学计数法显示小数,保留15位有效数位。
5. bank: 显示小数的银行格式,保留两位有效数位。
6. fixed: 显示小数的定点格式,保留两位小数。
你可以使用以下命令设置小数的显示精度:
format short % 设置为一般格式,保留四位有效数位
format long % 设置为完整格式,保留15位有效数位
format shortE % 设置为科学计数法格式,保留四位有效数位
format longE % 设置为科学计数法格式,保留15位有效数位
format bank % 设置为银行格式,保留两位有效数位
format fixed % 设置为定点格式,保留两位小数
例如,执行以下代码:
format long
a = 1/3
b = 1/7
将会显示如下输出:
a =
0.333333333333333
b =
0.142857142857143
可以看到,设置为完整格式后,小数的有效位数增加为15位。
[matlab笔记]绘图时dataTip的设置2009-04-29 16:43:45| 分类: Computer | 标签: |字号大中小订阅用matlab(我用的版本是2009)绘图后,有时候需要显示某个数据据点的信息,这时候可以用工具栏上的Data Cursor工具。
如下图所示选中数据点之后,会弹出一个Data Tip,Data Tip显示的就是当前被选中的数据点的基本信息,比如图中显示的是坐标值。
现在就遇到一个问题了,如何自己定制这个Data Tip呢?特别是,我的数据有效数字太多时,默认情况下只能显示4位,如何让它显示的精度更高呢?matlab提供了解决方案,不是Option,也不是Preferences,而是脚本。
我这里把matlab 的m文件称作脚本。
习惯了图形界面的人可能会觉得麻烦,但是我却觉得这是最自由的解决方案。
下面以一个实例来演示操作过程:1、绘图x=rand(1000,1); y=rand(1000,1); plot(x,y,'*');这样,就在[0,1]X[0,1]这样一个矩形内绘制了1000*1000个点。
绘图的时候要指定一个点的图例,不然默认情况下是不画点的,这样也就没法点选了。
2、选中Data Cursor工具,这样,鼠标放到图中间会变成一个十字,这时候点击一个数据点会弹出一个Data Tip框。
可以看到显示只有4位有效数字。
3、右键菜单,里面有两项"Edit Text Update Function"和"Select Text Update Function"。
分别表示编辑配置文件,选择配置文件(配置文件指的还是m文件)。
在未编辑之前,当前图用的是默认配置文件。
编辑之后,需要保存到一个位置,新保存的文件只对当前图有效。
下次如果还想使用这个配置文件,就要用到"Select Text Update Function"了。
实验一特殊函数与图形一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景与实验目的著名的Riemann函数大家都很熟悉了,但是关于它的图像你是否清楚呢除了最上面那几点,其他都很难画吧你想不想看看下面那些“挤在一起”的点是怎样分布的呢还有几何中的马鞍面、单叶双曲面等是怎样由直线生成的,是不是也想目睹一下呢这些,都离不开绘图.实际上绘图一直是数学中的一种重要手段,借助图形,往往可以化繁为简,使抽象的对象得到明白直观的体现.比如函数的基本性质,一个图形常可以使之一目了然,非常有效.它虽不能代替严格的分析与证明,但在问题的研究过程中,可以帮助研究人员节约相当一部分精力.此外,它还可以使计算、证明、建模等的结果得到更明白易懂的表现,有时,这比科学论证更有说服力.同时,数学的教学与学习过程也离不开绘图.借助直观的图形,常可以使初学者更容易接受新知识.如数学分析中有不少函数,其解析式着实让人望而生畏,即使对其性质作了详尽的分析,还是感到难明就里;但如果能看到它的图形,再配合理论分析,则问题可以迎刃而解.又如在几何的学习中,会遇到大量的曲线与曲面,也离不开图形的配合.传统的手工作图,往往费力耗时,效果也不尽理想.计算机恰恰弥补了这个不足,使你可以方便地指定各种视角、比例、明暗,从各个角度进行观察.本实验通过对函数的图形表示和几个曲面(线)图形的介绍,一方面展示它们的特点,另一方面,也将就Matlab软件的作图功能作一个简单介绍.大家将会看到,Matlab 的作图功能非常强大.二、相关函数(命令)及简介1.平面作图函数:plot,其基本调用形式:plot(x,y,s)以x作为横坐标,y作为纵坐标.s是图形显示属性的设置选项.例如:x=-pi:pi/10:pi;y=sin(x);plot(x,y,'--rh','linewidth',2,'markeredgecolor','b','markerfacecolor','g')图1在使用函数plot时,应当注意到当两个输入量同为向量时,向量x与y必须维数相同,而且必须同是行向量或者同是列向量.绘图时,可以制定标记的颜色和大小,也可以用图形属性制定其他线条特征,这些属性包括:linewidth 指定线条的粗细.markeredgecolor 指定标记的边缘色markerfacecolor 指定标记表面的颜色.markersize 指定标记的大小.若在一个坐标系中画几个函数,则plot的调用格式如下:plot(x1,y1,s1,x2,y2,s2,……)2.空间曲线作图函数:plot3,它与plot相比,只是多了一个维数而已.其调用格式如下:plot3(x,y,z,s).例如:x=0:pi/30:20*pi;y=sin(x);z=cos(x);plot3(x,y,z)得到三维螺旋线:图23.空间曲面作图函数:(1)mesh函数.绘制彩色网格面图形.调用格式:mesh(z),mesh(x,y,z)和mesh(x,y,z,c).其中,mesh(x,y,z,c)画出颜色由c指定的三维网格图.若x、y均为向量,则length(x)=n,length(y)=m,[m,n]=size(z).(2)surf在矩形区域内显示三维带阴影曲面图.调用格式与mesh类似.(3)ezmesh用符号函数作三维曲面网格图.调用格式:ezmesh(x,y,z)其中x = x(s,t), y = y(s,t),z = z(s,t).画图区域默认为: -2*pi < s < 2*pi 且-2*pi < t < 2*pi.或者用格式:ezmesh(x,y,z,[smin,smax,tmin,tmax])(4)ezsurf用符号函数作三维曲面图.调用格式与ezmesh类似.(5)sphere画球体命令.4.meshgrid,调用格式:[x,y]=meshgrid(m,n),这里的m,n为给定的向量,可以定义网格划分区域和划分方法.矩阵x和矩阵y是网格划分后的数据矩阵.5.图像的修饰与其他函数:(1)axis equal 控制各个坐标轴的分度,使其相等;(2)colormap设置绘图颜色.调用格式:colormap([r g b])其中r,g,b都是0-1之间的数.或者用格式:colormap(s)s颜色映像相应的颜色系颜色映像相应的颜色系autumn红黄色系hsv色调饱和色系gray线性灰色系hot黑红黄白色系cool青和洋红色系pink柔和色系(3(4)find找出符合条件的元素在数组中的位置.调用格式:y=find(条件)例如:输入:a=[4 5 78 121 4 665 225 4 1];b=find(a>7)输出: b =3 4 6 7三、实验内容数学分析中,特别是积分部分,我们接触了不少有趣的函数,由于其中有的不是一一对应的,用上面的方法无法画出它们的图像,这时就只能用参数了.此外还有些图形只能用参数来画,比如空间曲线,在计算机上不接受“两个曲面的交线”这种表示,所以也只能用参数来实现.用参数方式作图的关键在于找出合适的参数表示,尤其是不能有奇点,最好也不要用到开方.所以要找的参数最好是有几何意义的.当然这也不可一概而论,需要多积累经验.1.利用函数plot在一个坐标系中画以下几个函数图像,要求采用不同颜色、不同线形、不同的符号标记.函数为:.程序如下:t=0:pi/20:2*pi;x=sin(t);y=cos(t);z=sin(2*t);plot(t, x, '--k*', t, y, '-rs', t, z, ':bo')图像如下:图32.绘制类似田螺线的一条三维螺线(方程自己设计).程序如下:t=0:.1:30;x=2*(cos(t)+t.*sin(t));y=2*(sin(t)-t.*cos(t));z=*t;plot3(x,y,-z) %取–z 主要是为了画图看起来更清楚axis equal图像如下:图43.利用函数,绘制一个墨西哥帽子的图形.程序如下:[a,b]=meshgrid(-8:.5:8); %先生成一个网格c=sqrt(a.^2+b.^2)+eps;z=sin(c)./c;mesh(a,b,z)axis square图像如下:图5思考:这里的 eps 是什么其作用是什么4.利用surf绘制马鞍面图形(函数为:).程序如下:[x,y]=meshgrid(-25:1:25,-25:1:25);z=x.^2/9-y.^2/4;surf(x,y,z)title('马鞍面')grid off图像如下:图65.分别用ezmesh和ezsurf各绘制一个圆环面,尝试将两个圆环面放在一个图形界面内,观察它们有什么不同之处.提示:圆环面的方程为:,而圆环面的参数方程为:程序参见附录1.图像如下:图76.绘制黎曼函数图形,加深对黎曼函数的理解.说明:黎曼函数的定义为程序参见附录2.图像如下:图8四、自己动手1.作出下图所示的三维图形:图9提示:图形为圆环面和球面的组合.2.作出下图所示的墨西哥帽子及其剪裁图形:图103.画出球面、椭球面、双叶双曲面、单叶双曲面.4.若要求田螺线的一条轴截面的曲边是一条抛物线:时.试重新设计田螺线的参数方程,并画出该田螺线.5.作出下图所示的马鞍面(颜色为灰色,并有一个标题:“马鞍面”):图116.绘制图8所示的黎曼函数图形,要求分母的最大值的数值由键盘输入(提示:使用input语句).回目录下一页实验二定积分的近似计算一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容1.矩形法2.梯形法3.抛物线法4. 直接应用Matlab命令计算结果四、自己动手一、问题背景与实验目的利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用.二、相关函数(命令)及简介1.sum(a):求数组a的和.2.format long:长格式,即屏幕显示15位有效数字.(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.4.quad():抛物线法求数值积分.格式: quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即 .*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2);5.trapz():梯形法求数值积分.格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算x=0:pi/100:pi;y=sin(x);trapz(x,y)6.dblquad():抛物线法求二重数值积分.格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递.例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法.Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件:function z = integrnd(x, y)z = y*sin(x);7.fprintf(文件地址,格式,写入的变量):把数据写入指定文件.例:x = 0:.1:1;y = [x; exp(x)];fid = fopen('','w'); %打开文件fprintf(fid,'% %\n',y); %写入fclose(fid) %关闭文件8.syms 变量1 变量2 …:定义变量为符号.9.sym('表达式'):将表达式定义为符号.解释:Matlab中的符号运算事实上是借用了Maple的软件包,所以当在Matlab中要对符号进行运算时,必须先把要用到的变量定义为符号.10.int(f,v,a,b):求f关于v积分,积分区间由a到b.11.subs(f,'x',a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.若简单地使用subs(f),则将f的所有符号变量用可能的数值代入,并计算出值.三、实验内容1.矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同的取法,计算结果会有不同,我们以为例(取),(1)左点法:对等分区间,在区间上取左端点,即取,,理论值,此时计算的相对误差(2)右点法:同(1)中划分区间,在区间上取右端点,即取,,理论值,此时计算的相对误差(3)中点法:同(1)中划分区间,在区间上取中点,即取,,理论值,此时计算的相对误差如果在分割的每个小区间上采用一次或二次多项式来近似代替被积函数,那么可以期望得到比矩形法效果好得多的近似计算公式.下面介绍的梯形法和抛物线法就是这一指导思想的产物.2.梯形法等分区间,相应函数值为().曲线上相应的点为()将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得每个上的曲边梯形成为真正的梯形,其面积为,.于是各个小梯形面积之和就是曲边梯形面积的近似值,,即,称此式为梯形公式.仍用的近似计算为例,取,,理论值,此时计算的相对误差很显然,这个误差要比简单的矩形左点法和右点法的计算误差小得多.3.抛物线法由梯形法求近似值,当为凹曲线时,它就偏小;当为凸曲线时,它就偏大.若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法.将积分区间作等分,分点依次为,,对应函数值为(),曲线上相应点为().现把区间上的曲线段用通过三点,,的抛物线来近似代替,然后求函数从到的定积分:由于,代入上式整理后得同样也有……将这个积分相加即得原来所要计算的定积分的近似值:,即这就是抛物线法公式,也称为辛卜生(Simpson)公式.仍用的近似计算为例,取,=,理论值,此时计算的相对误差4. 直接应用Matlab命令计算结果(1)数值计算方法1:int('1/(1+x^2)','x',0,1) (符号求积分)方法2:quad('1./(1+x.^2)',0,1) (抛物线法求数值积分)方法3:x=0::1;y=1./(1+x.^2);trapz(x,y) (梯形法求数值积分)(2)数值计算方法1:int(int('x+y^2','y',-1,1),'x',0,2) (符号求积分)方法2:dblquad(inline('x+y^2'),0,2,-1,1) (抛物线法二重数值积分)四、自己动手1.实现实验内容中的例子,即分别采用矩形法、梯形法、抛物线法计算,取,并比较三种方法的精确程度.2.分别用梯形法与抛物线法,计算,取.并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异.3.试计算定积分.(注意:可以运用trapz()、quad()或附录程序求解吗为什么)4.将的近似计算结果与Matlab中各命令的计算结果相比较,试猜测Matlab中的数值积分命令最可能采用了哪一种近似计算方法并找出其他例子支持你的观点.5.通过整个实验内容及练习,你能否作出一些理论上的小结,即针对什么类型的函数(具有某种单调特性或凹凸特性),用某种近似计算方法所得结果更接近于实际值6.学习的程序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环.上一页回目录下一页实验三求代数方程的近似根(解)一、问题背景和实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景和实验目的求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当是一次多项式时,称为线性方程,否则称之为非线性方程.当是非线性方程时,由于的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间,或给出某根的近似值.在实际问题抽象出的数学模型中,可以根据物理背景确定;也可根据的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况.通过本实验希望你能:1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程;2. 求代数方程(组)的解.二、相关函数(命令)及简介1.abs( ):求绝对值函数.2.diff(f):对独立变量求微分,f 为符号表达式.diff(f, 'a'):对变量a求微分,f 为符号表达式.diff(f, 'a', n):对变量 a 求 n 次微分,f 为符号表达式.例如:syms x tdiff(sin(x^2)*t^6, 't', 6)ans=720*sin(x^2)3.roots([c(1), c(2), …, c(n+1)]):求解多项式的所有根.例如:求解:.p = [1 -6 -72 -27];r = roots(p)r =4.solve('表达式'):求表达式的解.solve('2*sin(x)=1')ans =1/6*pi5.linsolve(A, b):求线性方程组 A*x=b 的解.例如:A= [9 0; -1 8]; b=[1; 2];linsolve(A, b)ans=[ 1/9][19/72]6.fzero(fun, x0):在x0附近求fun 的解.其中fun为一个定义的函数,用“@函数名”方式进行调用.例如:fzero(@sin, 3)ans=7.subs(f, 'x ', a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.例如:subs('x^2 ', 'x ', 2)ans = 4三、实验内容首先,我们介绍几种与求根有关的方法:1.对分法对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.设在上连续,,即,或,.则根据连续函数的介值定理,在内至少存在一点,使.下面的方法可以求出该根:(1)令,计算;(2)若,则是的根,停止计算,输出结果.若,则令,,若,则令,;.……,有、以及相应的.(3) 若 (为预先给定的精度要求),退出计算,输出结果;反之,返回(1),重复(1),(2),(3).以上方法可得到每次缩小一半的区间序列,在中含有方程的根.当区间长很小时,取其中点为根的近似值,显然有以上公式可用于估计对分次数.分析以上过程不难知道,对分法的收敛速度与公比为的等比级数相同.由于,可知大约对分10次,近似根的精度可提高三位小数.对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值.2. 迭代法1)迭代法的基本思想:由方程构造一个等价方程从某个近似根出发,令,可得序列,这种方法称为迭代法.若收敛,即,只要连续,有即可知,的极限是的根,也就是的根.当然,若发散,迭代法就失败.以下给出迭代过程收敛的一些判别方法:定义:如果根的某个邻域中,使对任意的,迭代过程,收敛,则称迭代过程在附近局部收敛.定理1:设,在的某个邻域内连续,并且,,则对任何,由迭代决定的序列收敛于.定理2:条件同定理 1,则定理3:已知方程,且(1) 对任意的,有.(2) 对任意的,有,则对任意的,迭代生成的序列收敛于的根,且.以上给出的收敛定理中的条件要严格验证都较困难,实用时常用以下不严格的标准:当根区间较小,且对某一,明显小于1时,则迭代收敛(参见附录3).2) 迭代法的加速:a) 松弛法:若与同是的近似值,则是两个近似值的加权平均,其中称为权重,现通过确定看能否得到加速.迭代方程是:其中,令,试确定:当时,有,即当,时,可望获得较好的加速效果,于是有松弛法:,松弛法的加速效果是明显的 (见附录4),甚至不收敛的迭代函数经加速后也能获得收敛.b) Altken方法:松弛法要先计算,在使用中有时不方便,为此发展出以下的 Altken 公式:,是它的根,是其近似根.设,,因为,用差商近似代替,有,解出,得由此得出公式;;,这就是Altken 公式,它的加速效果也是十分明显的,它同样可使不收敛的迭代格式获得收敛(见附录5).3. 牛顿(Newton)法(牛顿切线法)1) 牛顿法的基本思想:是非线性方程,一般较难解决,多采用线性化方法.记:是一次多项式,用作为的近似方程.的解为记为,一般地,记即为牛顿法公式.2) 牛顿法的收敛速度:对牛顿法,迭代形式为:注意分子上的,所以当时,,牛顿法至少是二阶收敛的,而在重根附近,牛顿法是线性收敛的.牛顿法的缺点是:(1)对重根收敛很慢;(2)对初值要求较严,要求相当接近真值.因此,常用其他方法确定初值,再用牛顿法提高精度.4. 求方程根(解)的其它方法(1) solve('x^3-3*x+1=0')(2) roots([1 0 -3 1])(3) fzero('x^3-3*x+1', -2)(4) fzero('x^3-3*x+1',(5) fzero('x^3-3*x+1',(6) linsolve([1, 2, 3; 4, 5, 6; 7, 8, 0], [1, 2, 3]')体会一下,(2)(5) 用了上述 1 3 中的哪一种方法以下是本实验中的几个具体的实验,详细的程序清单参见附录.具体实验1:对分法先作图观察方程:的实根的分布区间,再利用对分法在这些区间上分别求出根的近似值.输入以下命令,可得的图象:f='x^3-3*x+1';g='0';ezplot(f, [-4, 4]);hold on;ezplot(g, [-4, 4]); %目的是画出直线 y=0,即 x 轴grid on;axis([-4 4 -5 5]);hold off请填写下表:实根的分布区间该区间上根的近似值在某区间上求根的近似值的对分法程序参见附录1.具体实验2:普通迭代法采用迭代过程:求方程在附近的根,精确到第 4 位小数.构造等价方程:用迭代公式:,用 Matlab 编写的程序参见附录2.请利用上述程序填写下表:分析:将附录2第4行中的分别改为以及,问运行的结果是什么你能分析得到其中的原因吗看看下面的“具体实验3”是想向你表达一个什么意思.用 Matlab 编写的程序参见附录3.具体实验3:收敛/发散判断设方程的三个根近似地取,和,这些近似值可以用上面的对分法求得.迭代形式一:收敛 (很可能收敛,下同)不收敛 (很可能不收敛,下同)不收敛迭代形式二:收敛不收敛不收敛迭代形式三:不收敛收敛收敛具体实验4:迭代法的加速1——松弛迭代法,,迭代公式为程序参见附录4.具体实验5:迭代法的加速2——Altken迭代法迭代公式为:,,程序参见附录5.具体实验6:牛顿法用牛顿法计算方程在-2到2之间的三个根.提示:,迭代公式:程序参见附录6 (牛顿法程序).具体实验7:其他方法求下列代数方程(组)的解:(1)命令:solve('x^5-x+1=0')(2)命令:[x, y]=solve('2*x+3*y=0', '4*x^2+3*y=1')(3) 求线性方程组的解,已知,命令:for i=1:5for j=1:5m(i, j)=i+j-1;endendm(5, 5)=0;b=[1:5]'linsolve(m, b)思考:若,或是类似的但阶数更大的稀疏方阵,则应如何得到四、自己动手1.对分法可以用来求偶重根附近的近似解吗为什么2.对照具体实验2、4、5,你可以得出什么结论3.选择适当的迭代过程,分别使用:(1)普通迭代法;(2)与之相应的松弛迭代法和 Altken 迭代法.求解方程在附近的根,精确到4位小数,请注意迭代次数的变化.4.分别用对分法、普通迭代法、松弛迭代法、Altken 迭代法、牛顿切法线等5种方法,求方程的正的近似根,.(建议取.时间许可的话,可进一步考虑的情况.)上一页回目录下一页。
在matlab中如何控制数据的精度在matlab中如何控制数据的精度?【完整总结】(2013-02-04 14:56:39)转载▼标签:杂谈针对数据的显示形式控制,matlab中有专用命令format但该命令不影响数据的储存形式和计算精度format缺省时为默认短格式方式与format short相同format short短格式方式,显示5位定点十进制数。
format long长格式方式,显示15位定点十进制数。
format short g当数据大于1000或小于1时便会以科学记数法显示(-e),若想坚持用整数部分加小数部分的格式来显示,就要再后边加g format long gformat hex十六进制格式方式。
format bank银行格式。
按元、角、分(小数点后具有两位)的固定格式。
format ++格式,以+,—和空格分别表示中的正数,负数和零元素format short e短格式e方式,显示5位浮点十进制数format long e长格式e方式,显示15位浮点十进制数。
format rat分数格式形式。
用有理数逼近显示数据。
如pi显示为355/113。
format loose松散格式。
数据之间有空行。
format compact紧凑格式。
数据之间无空行。
vpa(date,n)将数据date以n位有效数字显示。
format默认格式format short 5字长定点数format long 15字长定点数format short e 5字长浮点数format long e 15字长浮点数format short gformat long gformat hex 16进制format bank定点货币形式format rat小数分数表示format ++,-,空格format compact压缩空格format loose包括空格和空行format long 15字长定点数format short e 5字长浮点数format long e 15字长浮点数format short gformat long gformat hex 16进制format bank定点货币形式format rat小数分数表示format ++,-,空格format compact压缩空格format loose包括空格和空行当然也可以不用format命令,可以修改系统的默认设置格式,File->Preferences->Command Window->Text Display.如果想得到分数可以用rats()函数如果想得到根号,只有用符号表示了,当然用符号表示是万能的。
多边形中心点坐标matlab-概述说明以及解释1.引言1.1 概述在几何学中,多边形是一种封闭的平面图形,由若干条线段连接而成,每条线段称为多边形的边,相邻边之间的交点称为多边形的顶点。
多边形是图形学中的重要概念,在实际应用中也有着广泛的应用。
多边形的中心点是指多边形内部点到多边形各个顶点距离之和最小的点,也被称为多边形的几何中心。
计算多边形的中心点坐标对于图形学、计算机辅助设计等领域具有重要意义。
本文将介绍多边形中心点的定义以及计算多边形中心点坐标的原理,并介绍如何使用MATLAB编程计算多边形中心点的方法。
通过对多边形中心点的研究与计算,可以更好地理解多边形的性质与特点,为相关领域的研究和应用提供参考和帮助。
1.2 文章结构文章结构部分主要介绍了本文的组织方式和每个章节的内容概要,方便读者更好地理解整篇文章的逻辑结构和主要内容。
文章结构主要包括引言、正文和结论三个部分。
引言部分介绍了本文的背景和意义,正文部分详细介绍了多边形中心点的定义、计算原理和使用MATLAB计算方法,结论部分总结了全文的主要观点和成果,并展望了未来的应用前景。
通过明确的文章结构,读者可以更好地把握文章的主题和内容,提高阅读效率和理解度。
1.3 目的本文的目的是介绍如何使用MATLAB计算多边形的中心点坐标。
通过本文的阐述,读者可以了解到多边形中心点的定义,计算多边形中心点坐标的原理,并掌握使用MATLAB编程的方法来计算多边形中心点坐标。
希望本文能够帮助读者更深入地了解多边形几何特性,提高他们在MATLAB编程中应用数学知识的能力。
同时,本文也可以作为其他相关领域的研究人员和工程师在实际工作中处理多边形中心点的参考。
2.正文2.1 多边形中心点的定义多边形中心点是指一个多边形的几何中心,也可以称为重心或质心。
在平面几何中,对于任意一个简单多边形(即不自交、没有洞的多边形),其中心点是可以唯一确定的。
多边形的中心点具有以下特点:1. 多边形中心点是多边形的一个点,其到多边形各个顶点的距离之和最小。
MATLAB如何控制精度在MATLAB中,可以使用多种方法来控制数字的精度。
下面列举了一些常用的方法:1. 使用format函数:format函数可以用来控制在MATLAB中输出数字的格式。
可以使用以下代码设置输出小数点后的位数:```matlabformat short % 4位小数format long % 15位小数format bank % 2位小数,以逗号分隔的形式```2. 使用vpa函数:vpa(Variable Precision Arithmetic)函数可以用来控制数字的精度,并将结果以符号形式返回。
可以使用以下代码设置输出的有效数字位数:```matlabvpa(x, n) % x为要设置精度的变量,n为有效数字位数```3. 使用sym函数:sym函数用于创建符号对象,可以使用符号对象进行高精度计算。
符号对象可以使用以下代码创建:```matlabx = sym('x'); % 创建一个符号变量x```4.避免使用浮点数:浮点数在进行计算时会产生舍入误差,因此可以尽量使用整数进行计算,以减小精度误差的影响。
5. 使用vpa函数进行数值计算:在使用vpa函数时,可以直接对符号表达式进行计算,而不是先进行数值计算再使用vpa函数控制精度。
这样可以更精确地控制计算结果的精度。
6.使用MATLAB的符号工具箱:MATLAB的符号工具箱提供了丰富的符号计算功能,可以进行高精度的数值计算。
可以使用以下命令加载符号工具箱:```matlabsyms x y % 加载x和y作为符号变量```7. 使用MATLAB工具箱中的数值计算函数:MATLAB工具箱中的一些函数,如vpa、mp、mpadd等,可以用于执行高精度数值计算。
8. 使用Fixed-Point Toolbox:如果需要精确控制小数点后位数的精度,可以使用MATLAB的Fixed-Point Toolbox(固定小数点工具箱)来处理小数点位移和精度控制。
三点标定法matlab【1】简介三点标定法三点标定法是一种广泛应用于测量和计算领域的算法,它通过测量三个已知位置的点来确定一个未知点的坐标。
在这种方法中,通常使用两个已知点和一个未知点来构建一个三角形,然后使用第三个已知点来解三角形,从而获得未知点的坐标。
三点标定法在实际应用中具有较高的精度,尤其是在平面测量和空间测量中。
【2】MATLAB实现三点标定法的基本步骤在MATLAB中实现三点标定法,我们可以分为以下几个基本步骤:1.输入已知点的坐标:已知点的坐标分别为A(x1, y1),B(x2, y2),C(x3, y3)。
2.计算三角形边长:使用距离公式计算AB、AC和BC的长度。
3.计算三角形的角度:使用余弦定理计算角度BAC、ABC和ACB的余弦值。
4.解三角形:根据余弦值和三角形边长,使用正弦公式计算未知点的坐标。
【3】代码示例及解析以下是一个简单的MATLAB代码示例,用于实现三点标定法:```matlabfunction [x, y] = three_point_calibration(x1, y1, x2, y2, x3, y3) % 输入已知点坐标A = [x1, y1];B = [x2, y2];C = [x3, y3];% 计算三角形边长AB = norm(B - A);AC = norm(C - A);BC = norm(C - B);% 计算三角形角度的余弦值cosBAC = (AB^2 + AC^2 - BC^2) / (2 * AB * AC);cosABC = (AB^2 + BC^2 - AC^2) / (2 * AB * BC);cosACB = (BC^2 + AC^2 - AB^2) / (2 * BC * AC);% 解三角形sinBAC = sqrt(1 - cosBAC^2);sinABC = sqrt(1 - cosABC^2);sinACB = sqrt(1 - cosACB^2);% 计算未知点坐标x = A(1) + (BC * sinBAC) / (sinABC + sinACB);y = A(2) + (BC * sinBAC) / (sinABC + sinACB);end```【4】应用三点标定法进行实际问题分析三点标定法在实际问题中具有广泛的应用,例如在土地测量、建筑测量、机器人导航等领域。
v1.0 可编辑可修改[matlab笔记]绘图时dataTip的设置2009-04-29 16:43:45| 分类: Computer | 标签: |字号大中小订阅用matlab(我用的版本是2009)绘图后,有时候需要显示某个数据据点的信息,这时候可以用工具栏上的Data Cursor工具。
如下图所示选中数据点之后,会弹出一个Data Tip,Data Tip显示的就是当前被选中的数据点的基本信息,比如图中显示的是坐标值。
现在就遇到一个问题了,如何自己定制这个Data Tip呢特别是,我的数据有效数字太多时,默认情况下只能显示4位,如何让它显示的精度更高呢?matlab提供了解决方案,不是Option,也不是Preferences,而是脚本。
我这里把matlab 的m文件称作脚本。
习惯了图形界面的人可能会觉得麻烦,但是我却觉得这是最自由的解决方案。
下面以一个实例来演示操作过程:1、绘图x=rand(1000,1); y=rand(1000,1); plot(x,y,'*');这样,就在[0,1]X[0,1]这样一个矩形内绘制了1000*1000个点。
绘图的时候要指定一个点的图例,不然默认情况下是不画点的,这样也就没法点选了。
2、选中Data Cursor工具,这样,鼠标放到图中间会变成一个十字,这时候点击一个数据点会弹出一个Data Tip框。
可以看到显示只有4位有效数字。
3、右键菜单,里面有两项"Edit Text Update Function"和"Select Text Update Function"。
分别表示编辑配置文件,选择配置文件(配置文件指的还是m文件)。
在未编辑之前,当前图用的是默认配置文件。
编辑之后,需要保存到一个位置,新保存的文件只对当前图有效。
下次如果还想使用这个配置文件,就要用到"Select Text Update Function"了。
matlab y轴三位小数-概述说明以及解释1.引言1.1 概述概述部分的内容:引言部分是一篇文章的开篇,是对文章整体内容进行简要介绍和概述的部分。
本文主要讨论如何在MATLAB中设置y轴显示为三位小数。
在数据分析和可视化过程中,合适的小数位数显示可以让数据更加直观、清晰。
本文将介绍MATLAB中设置y轴显示为三位小数的方法及应用场景。
首先,我们将会对文章的结构进行简要介绍。
文章由引言、正文和结论三个部分组成。
在引言部分,我们将概述本文的目的和结构,使读者了解整篇文章的框架。
正文部分将详细介绍在MATLAB中如何进行y轴显示设置,并提供一些相关的代码示例和应用场景。
最后,在结论部分,我们将对本文的主要内容进行总结,并展望未来可能的研究方向。
本文的目的在于帮助读者更好地理解如何在MATLAB中设置y轴显示为三位小数,并引导读者在实际应用中灵活运用这一功能。
这将有助于提升数据分析和可视化的效果,使得结果更加准确、可读性更高。
在接下来的章节中,我们将依次详细介绍MATLAB中设置y轴显示为三位小数的步骤,并通过实例来说明其实际应用。
通过学习本文,读者将能够顺利掌握这一技巧,并在自己的研究或工作中灵活应用。
文章结构部分主要介绍了本篇文章的组织结构和各个部分的内容概述。
在这篇文章中,我们将按照以下结构进行叙述:引言部分(Section 1):在引言部分,我们将首先给出文章的概述,介绍所要讨论的问题背景和相关的研究现状。
接着,我们将详细介绍本篇文章的组织结构和各个部分的内容概述。
1.1 概述:在概述部分,我们将简要概述本篇文章所要解决的问题和目标,提出问题的重要性,并概述解决该问题所采用的方法和策略。
1.2 文章结构:在本部分,我们将详细介绍文章的组织结构和各个部分的内容概述。
我们将介绍文章的大纲和目录,给读者一个整体的了解和预期。
1.3 目的:在目的部分,我们将明确本篇文章的目的和研究意义,阐述为什么我们进行这项研究,以及我们希望通过这项研究解决的问题和取得的成果。
Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。
此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。
这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。
一.二维绘图二维图形是将平面坐标上的数据点连接起来的平面图形。
可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。
二维图形的绘制是其他绘图操作的基础。
一.绘制二维曲线的基本函数在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。
1. plot函数的基本用法plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y 坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。
plot函数的应用格式plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。
例51 在[0 , 2pi]区间,绘制曲线程序如下:在命令窗口中输入以下命令>> x=0:pi/100:2*pi;>> y=2*exp(-0.5*x).*sin(2*pi*x);>> plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。
例52 绘制曲线这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:>> t=-pi:pi/100:pi;>> x=t.*cos(3*t);>> y=t.*sin(t).*sin(t);>> plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线以上提到plot函数的自变量x,y为长度相同的向量,这是最常见、最基本的用法。
matlab怎么设置参数设置,matlab设置参数matlab精度设置_计算机软件及应⽤_IT/计算机_专业资料。
format 这个函数不是⽤于控制运算精度的,它只能控制结果显⽰类型。
运 算的时候还是⽤ matlab ⾃⼰的精度,具体......参数:filename 是⽂件名,fmt 是图像⽂件的格式。
如果图像⽂件不在 Matlab 默认路径中(当前默 认路径可⽤ path 函数查看),则 filename 必须是全路径名。
fmt 可以......(4)trainParam属性:net.trainParam该属性定义了⽹络当 前训练函数的各参数,其属性值为各参数构成的结构体。
3.2 MATLAB神经⽹络⼯具箱中的⽹ 络对象属性 4.......在仿真环境设置中将“Stop Time”设为60, “Relative tolerance”设为1e-5。
3)初始化参数并逐步整定PID参数在MATLAB的Command Window输⼊:Kp=1;Ki=0;Kd=0;......在仿真环境设置中将“Stop Time”设为60, “Relative tolerance”设为1e-5。
3)初始化参数并逐步整定PID参数在MATLAB的Command Window输⼊:Kp=1;Ki=0;Kd=0;......(完整word版)MATLABsimulink中的基本模块的参数、含义、应⽤.....函数参数的matlab函数_计算机软件及应⽤_IT/计算机_专业资料。
Nargin 函数输⼊参数的个数; varargin Variable-length input argument list For example: 定义函数 ......I. Solver页,它允许⽤户设置仿真的开始和结束时间,选择解法器, 说明解法器参数及选择⼀些输出选项。
II. Workspace I/O页,作⽤是管理模型从MATLAB⼯作空间的输⼊......《精通MATLAB最优化计算》清华⼤学 龚纯 2009.4,ISBN:978-7-121-08251-1 内容简介 ? 本书的主要内容是应⽤MATLAB来解决最优化问题, 通过将“最优化问题”、“......Matlab simulink变压器的配置_⽣产/经营管理_经管营销_专业资料。
matlab 标定工具箱解读matlab标定工具箱是一个用于相机标定和立体视觉标定的强大工具。
相机标定是在摄像机成像过程中,将像素坐标和实际世界坐标之间的映射关系建立起来的过程。
立体视觉标定是将两个或多个相机的相对位置和内部参数进行估计的过程。
本文将详细介绍matlab标定工具箱的使用方法,包括相机标定、立体视觉标定以及标定结果的评估与应用。
一、相机标定1. 数据采集在进行相机标定之前,首先需要准备一组由摄像机拍摄的标定图像。
标定图像中应该包含已知尺寸的标定板,比如棋盘格。
在matlab标定工具箱中,先使用`cameraCalibrator`函数创建一个相机标定应用。
然后可以使用`cameraCalibrationDatastore`函数读取图像文件,或者直接使用采集视频流的方式获取图像数据。
2. 标定器创建与运行在标定工具箱中,可以通过以下几个步骤来创建相机标定器:a) 使用`cameraCalibrator`函数创建一个相机标定应用。
可以选择不同的标定模型和算法。
b) 通过`addImage`函数向标定应用中添加标定图像。
可以通过手动添加单张图像或者批量添加整个图像文件夹。
c) 使用`estimateCameraParameters`函数估计相机内部参数和畸变参数。
这个过程将根据已添加的标定图像计算出相机的内部参数矩阵、畸变系数和误差估计等。
3. 标定结果评估与保存一旦相机标定器创建完成,可以通过`showExtrinsics`函数来可视化标定后的结果。
使用该函数可以显示相机在不同位置和姿态下的外部参数估计结果。
同时,还可以通过`showReprojectionErrors`函数来显示重投影误差的直方图和统计信息。
重投影误差是指标定后的相机将标定板三维点投影回图像上的二维点与实际标定板上的二维点之间的差异。
二、立体视觉标定1. 数据采集进行立体视觉标定时,需要准备一组由两个摄像机同时拍摄的标定图像对。
matlab显⽰和保留⼩数位数,matlab精度,
a=123.456789;
vpa(a,5)=123.46
format:设置输出格式对浮点性变量,缺省为format short. format并不影响matlab如何计算和存储变量的值。
对浮点型变量的计算,即单精度或双精度,按合适的浮点精度进⾏,⽽不论变量是如何显⽰的。
对整型变量采⽤整型数据。
整型变量总是根据不同的类(class)以合适的数据位显⽰,例如,3位数字显⽰显⽰int8范围 -128:127。
format short, long不影响整型变量的显⽰。
format long 显⽰15位双精度,7为单精度(scaled fixed point) format short 显⽰5位(scaled fixed point format with 5 digits) format short eng ⾄少5位加3位指数 format long eng 16位加⾄少3位指数 format hex ⼗六进制 format bank 2个⼗进制位 format + 正、负或零 format rat 有理数近似 format short 缺省显⽰ format long g 对双精度,显⽰15位定点或浮点格式,对单精度,显⽰7位定点或浮点格式。
format short g 5位定点或浮点格式 format short e 5位浮点格式 format long e 双精度为15位浮点格式,单精度为7为浮点格式 Matlab⾥⾯显⽰的数字默认情况下是以short类型进⾏显⽰和存储的。
但是有时候我们需要对它的显⽰格式(精度)进⾏更改,以适合我们的需求。
更改⽅法如下:。
2009-04-29 16:43:45| 分类:Computer|字号订阅用matlab(我用的版本是2009)绘图后,有时候需要显示某个数据据点的信息,这时候可以用工具栏上的Data Cursor工具。
如下图所示选中数据点之后,会弹出一个Data Tip,Data Tip显示的就是当前被选中的数据点的基本信息,比如图中显示的是坐标值。
现在就遇到一个问题了,如何自己定制这个Data Tip呢?特别是,我的数据有效数字太多时,默认情况下只能显示4位,如何让它显示的精度更高呢?matlab提供了解决方案,不是Option,也不是Preferences,而是脚本。
我这里把matlab 的m文件称作脚本。
习惯了图形界面的人可能会觉得麻烦,但是我却觉得这是最自由的解决方案。
下面以一个实例来演示操作过程:1、绘图x=rand(1000,1); y=rand(1000,1); plot(x,y,'*');这样,就在[0,1]X[0,1]这样一个矩形内绘制了1000*1000个点。
绘图的时候要指定一个点的图例,不然默认情况下是不画点的,这样也就没法点选了。
2、选中Data Cursor工具,这样,鼠标放到图中间会变成一个十字,这时候点击一个数据点会弹出一个Data Tip框。
可以看到显示只有4位有效数字。
3、右键菜单,里面有两项"Edit Text Update Function"和"Select Text Update Function"。
分别表示编辑配置文件,选择配置文件(配置文件指的还是m文件)。
在未编辑之前,当前图用的是默认配置文件。
编辑之后,需要保存到一个位置,新保存的文件只对当前图有效。
下次如果还想使用这个配置文件,就要用到"Select Text Update Function"了。
4、点选"Edit Text Update Function",出现一个m文件编辑器。
matlab绘图坐标属性设置1. 去掉边框,空白区域。
首先要了解的是Matlab是面向对象的。
最高等级的对象是screen,它定义了figure可以用的最大szie。
screen下面是figure。
figue就是你画图的时候跳出来的那个新的对话窗口。
如果figure变化,screen是不会跟着变化的。
但screen 变化的话,figure就要跟着变化了。
figure下面是axes。
axes是那个窗口里面你要画的东西。
axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[0 0 1]) % 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
set (gca,'position',[0.1,0.1,1,1] );2.用matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
我摸索出比较好的方法是如下的代码:%%%%%%%%%%%%%%%%%%%%%%plot your figure before%%%%%%%%%%%%%%%%%%%%%% figure resizeset(gcf,'Position',[100 100 260 220]);set(gca,'Position',[.13 .17 .80 .74]);figure_FontSize=8;set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','mid dle');set(findobj('FontSize',10),'FontSize',figure_FontSize);set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);%%%%%%%%%%%%%%%%%%%%%%%%%%%%解释:set(gcf,'Position',[100 100 260 220]);这句是设置绘图的大小,不需要到word里再调整大小。
v1.0 可编辑可修改[matlab笔记]绘图时dataTip的设置2009-04-29 16:43:45| 分类: Computer | 标签: |字号大中小订阅用matlab(我用的版本是2009)绘图后,有时候需要显示某个数据据点的信息,这时候可以用工具栏上的Data Cursor工具。
如下图所示选中数据点之后,会弹出一个Data Tip,Data Tip显示的就是当前被选中的数据点的基本信息,比如图中显示的是坐标值。
现在就遇到一个问题了,如何自己定制这个Data Tip呢特别是,我的数据有效数字太多时,默认情况下只能显示4位,如何让它显示的精度更高呢?matlab提供了解决方案,不是Option,也不是Preferences,而是脚本。
我这里把matlab 的m文件称作脚本。
习惯了图形界面的人可能会觉得麻烦,但是我却觉得这是最自由的解决方案。
下面以一个实例来演示操作过程:1、绘图x=rand(1000,1); y=rand(1000,1); plot(x,y,'*');这样,就在[0,1]X[0,1]这样一个矩形内绘制了1000*1000个点。
绘图的时候要指定一个点的图例,不然默认情况下是不画点的,这样也就没法点选了。
2、选中Data Cursor工具,这样,鼠标放到图中间会变成一个十字,这时候点击一个数据点会弹出一个Data Tip框。
可以看到显示只有4位有效数字。
3、右键菜单,里面有两项"Edit Text Update Function"和"Select Text Update Function"。
分别表示编辑配置文件,选择配置文件(配置文件指的还是m文件)。
在未编辑之前,当前图用的是默认配置文件。
编辑之后,需要保存到一个位置,新保存的文件只对当前图有效。
下次如果还想使用这个配置文件,就要用到"Select Text Update Function"了。
format这个函数不是用于控制运算精度的,它只能控制结果显示类型。
运算的时候还是用matlab自己的精度,具体是多少就不知道了。
matlab控制运算精度用的是digits和vpa这两个函数。
digits用于规定运算精度,比如:digits(20);这个语句就规定了运算精度是20位有效数字。
但并不是规定了就可以使用,因为实际编程中,我们可能有些运算需要控制精度,而有些不需要控制。
vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数。
例如:digits(5);a=vpa(sqrt(2));这样a的值就是1.4142,而不是准确的1.4142135623730950488016887242097......又如:digits(5);a=vpa(sqrt(2));b=sqrt(2);这样a的值是1.4142,b没有用vpa函数,所以b是1.4142135623730950488016887242097......vpa函数对其中每一个运算都控制精度,并非只控制结果。
digits(11);a=vpa(2/3+4/7+5/9);b=2/3+4/7+5/9;a的结果为1.7936507936,b的结果为1.793650793650794......也就是说,计算a的值的时候,先对2/3,4 /7,5/9这三个运算都控制了精度,又对三个数相加的运算控制了精度。
而b的值是真实值,对它取11位有效数字的话,结果为1.7936507937,与a不同,就是说vpa并不是先把表达式的值用matlab本身的精度求出来,再取有效数字,而是每运算一次,都控制精度。
我举的例子不太好,因为加法不太会增加数字位数。
希望大家能理解我的意思....vpa对它括起来的运算每一次都控制精度,但有一点需要注意,vpa对函数的参数不起作用。
举一个例子:digits(5);a=vpa(sqrt(2/3));b=vpa(sqrt(vpa(2/3)));结果a为0.81649,b为.81650。
[matlab笔记]绘图时dataTip的设置
2009-04-29 16:43:45| 分类:Computer | 标签:|字号大中小订阅
用matlab(我用的版本是2009)绘图后,有时候需要显示某个数据据点的信息,这时候可以用工具栏上的Data Cursor工具。
如下图所示
选中数据点之后,会弹出一个Data Tip,Data Tip显示的就是当前被选中的数据点的基本信息,比如图中显示的是坐标值。
现在就遇到一个问题了,如何自己定制这个Data Tip呢?特别是,我的数据有效数字太多时,默认情况下只能显示4位,如何让它显示的精度更高呢?
matlab提供了解决方案,不是Option,也不是Preferences,而是脚本。
我这里把matlab的m 文件称作脚本。
习惯了图形界面的人可能会觉得麻烦,但是我却觉得这是最自由的解决方案。
下面以一个实例来演示操作过程:
1、绘图
x=rand(1000,1); y=rand(1000,1); plot(x,y,'*');
这样,就在[0,1]X[0,1]这样一个矩形内绘制了1000*1000个点。
绘图的时候要指定一个点的图例,不然默认情况下是不画点的,这样也就没法点选了。
2、选中Data Cursor工具,这样,鼠标放到图中间会变成一个十字,这时候点击一个数据点会弹出一个Data Tip框。
可以看到显示只有4位有效数字。
3、右键菜单,里面有两项"Edit Text Update Function"和"Select Text Update Function"。
分别表示编辑配置文件,选择配置文件(配置文件指的还是m文件)。
在未编辑之前,当前图用的是默认配置文件。
编辑之后,需要保存到一个位置,新保存的文件只对当前图有效。
下次如果还想使用这个配置文件,就要用到"Select Text Update Function"了。
4、点选"Edit Text Update Function",出现一个m文件编辑器。
内容如下:
function output_txt = myfunction(obj,event_obj)
% Display the position of the data cursor
% obj Currently not used (empty)
% event_obj Handle to event object
% output_txt Data cursor text string (string or cell array of strings).
pos = get(event_obj,'Position');
output_txt = {['X: ',num2str(pos(1),4)],...
['Y: ',num2str(pos(2),4)]};
% If there is a Z-coordinate in the position, display it as well
if length(pos) > 2
output_txt{end+1} = ['Z: ',num2str(pos(3),4)];
end
眼尖的人应该一眼就看到了几个"4",没错,正是它们限制了显示精度,改成更大的数就行了。
这几行代码的意思应该很明显了。
第一行是函数原型,以%开头的是注释,pos是变量,output_txt是返回值。
二维图分两行显示X,Y坐标,如果是三维,则还会显示Z坐标。
5、保存为m文件。
注意保存的文件一定要带有.m后缀,不然matlab识别不了,从而Data Tip 会显示为Error in custom datatip string function。
这个错误说函数返回错误,实际上就是不能识别。
6、保存完了,就算完事了。
以后可以直接改那个已经保存的文件,然后绘图后,选择这个文件。
再次提醒,每次绘图时使用的都是默认配置,想要特定的效果,要么重新写,要么选择指定配置文件。
7、关于这个配置文件本身,还有许多值得探讨的地方。
我这个例子只能更改显示精度,实际上,它还有许多可以自由定制的地方。
比如,可以显示点的序号,即第几个点。
在配置文件末尾加上一句:
output_txt{end+1} = ['index:', num2str(event_obj.DataIndex)];。