matlab提高计算精度 怎样计算链路预测精度

MATLAB控制运算精度
先来看一段MATLAB代码
& theta = 264.3783;
&&t1 = [cos(theta); cos(2*theta);
cos(3*theta); cos(4*theta); sin(theta); sin(2*theta); sin(3*theta);
sin(4*theta); 1];&
[0.8849&&&
-0.3591&&&
& Ximage = [7.5 -12.7
16.4& 1.5018& 0.0946
-12.8618]';
& result1 = t1'*X
& result2 = t2'*X
&在MATLAB控制台下查看t1与t2的值是一样的,但是结果却相差很多:
result1&与result2&的值符号都变了,这是为什么呢?
原来MATLAB显示数据时,默认现实小数点后面4位,但实际运算所使用的精度并不是这样。
所以上述的t1和t2在计算时候,值并不相等;
之所以result1和result2符号都发生改变,是因为Ximage里某些值比较大的缘故。
其实这两个值,都是非常靠近原点0的两个值。
MATLAB中控制运算精度&
format long 只能设置显示精度,并不能控制运算精度。
在MATLAB中,控制运算精度一般使用 digits&和 vpa。示例:
digits&& %显示当前运算精度
digits(n)& & %设定默认的精度
vpa(x,n)& &
%表示将s表示为n位有效数的符号对象
如果不设定digits(n)&&,系统默认为32位
需要注意:
1,vpa算出的值为符号变量,可以进行初等运算,但不能进行关系运算等;
2,vpa的运算速度比MATLAB标准函数要慢
MATLAB中四舍五入
采用函数 roundn(x,y) 例子
a=123.4567890;
a=roundn(a,-4)
% 返回 123.4568
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。在matlab中如何控制数据的精度_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
在matlab中如何控制数据的精度
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩1页未读,
定制HR最喜欢的简历
你可能喜欢只需一步,快速开始
扫一扫,访问微社区
查看: 2779|回复: 5|关注: 0
simulink 计算精度和误差
<h1 style="color:# 麦片财富积分
新手, 积分 15, 距离下一级还需 35 积分
关注者: 2
最近用simulink搭一个模型,其中一项是计算 2e-5的50%, 理论上结果应该是1e-5,但simulink 模拟之后的给出的是9.,计算结果存在误差。simulink进行模拟时定步长设为0.2e-6,solver用discrete,计算精度是double。
请教一下大家,这个问题应该怎么解决?
另外,两个数都是floating point的话,是不是不能直接比较?如果要比较结果的话,是不是需要转换成其他的数据类型?
论坛优秀回答者
帖子最佳答案
关注者: 757
存在误差是常见的,必要的是你需要给它订一个容限,只要误差不超过这个容县就OK。
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:http://item.jd.com/.html
论坛优秀回答者
帖子最佳答案
关注者: 757
存在误差是常见的,必要的是你需要给它订一个容限,只要误差不超过这个容县就OK。
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:http://item.jd.com/.html
论坛优秀回答者
帖子最佳答案
关注者: 757
存在误差是常见的,必要的是你需要给它订一个容限,只要误差不超过这个容县就OK。
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:http://item.jd.com/.html
<h1 style="color:# 麦片财富积分
关注者: 2
多谢校长亲自回答。
现在我用的是fixed step来求解,因此不能设置容差。
其次,现在不是计算精度太低,而是太高了。还是我自己的列子。2e-4的50%,应该是1e-4,而不是9.. 我想,能不能把得到的高精度的计算结果 round到比如10e-5. 这个才是我预期的结果。
论坛优秀回答者
帖子最佳答案
关注者: 757
|此回复为最佳答案
多谢校长亲自回答。
现在我用的是fixed step来求解,因此不能设置容差。
可以,有round功能,在math function模块中设置。
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:http://item.jd.com/.html
站长推荐 /3
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区只需一步,快速开始
扫一扫,访问微社区
查看: 3814|回复: 9|关注: 0
计算结果的精度问题
<h1 style="color:# 麦片财富积分
新手, 积分 7, 距离下一级还需 43 积分
我想用matlab来计算一个多次迭代的程序,我明白matlab每次计算过程都会产生误差,而我需要的计算结果的精度是要达到0.,请问matlab可以做到吗?怎么做?谢谢!!!
论坛优秀回答者
关注者: 303
误差多少主要是由你的算法决定的
<h1 style="color:# 麦片财富积分
误差多少主要是由你的算法决定的
你好,我不是很明白你的意思!我不知道何为算法,我的程序的计算过程是每一步得到一个结果,然后用上一个结果用于下一个结果的计算。
l1=23.39;l2=300;l3=777.765;l4=620;l5=180;l6=529.209;l7=393.983;xd2=717.438;yd2=256.253;xg2=965.882;yg2=-586.086;
xc2 = 110+zeros(1,360);
xh2 = 310+zeros(1,360);
& & theta1 = [0:pi/180:359*pi/180];
& & theta2 = 2 * atan (sqrt((l2 + l1 * cos(theta1))./(l2 - l1 * cos(theta1))));
& & yb = l1 * sin(theta1) + l2 * sin(theta2);
& & yc2 =%c2点的y方向的位置、速度、加速度
& & A00 = xd2 - xc2;
& & B00 = yd2 - yc2;
& & C00 = (A00.^2 + B00.^2 + (l4)^2 - (l3)^2)./ (2 * l4);
& & C01 = -((A00).^2 + (B00).^2 - (l4)^2 + (l3)^2) ./ (2 * l3);
& & theta32 = 2 * atan((B00 - sqrt((A00).^2 + (B00).^2 - (C01).^2)) ./ (A00 - C01));
& & theta42 = 2 * atan((B00 - sqrt((A00).^2 + (B00).^2 - (C00).^2)) ./ (A00 - C00));
& & xe2 = l4 * cos(theta42) + xd2;%e2点的x、y坐标值、沿x轴、y轴方向的速度、加速度
& & ye2 = l4 * sin(theta42) + yd2;
& & A10 = xg2 - xe2;
& & B10 = yg2 - ye2;
& & C10 = (-(A10).^2 - (B10).^2 + (l5)^2 - (l6)^2) ./ (2 * l6);
& & C11 = -((A10).^2 + (B10).^2 - (l6)^2 + (l5)^2) ./ (2 * l5);
& & theta52 = 2 * atan((B10 - sqrt((A10).^2 + (B10).^2 - (C11).^2)) ./ (A10 - C11));
& & theta62 = 2 * atan((B10 + sqrt((A10).^2 + (B10).^2 - (C10).^2)) ./ (A10 - C10));
& & A20 = 1/l7*(xg2 - xh2 - l6 * cos(theta62));
& & theta72= 2 * atan(sqrt((1 - A20) ./ (1 + A20)));
& & yh2 = yg2 - l7 * sin(theta72) - l6 * sin(theta62);
论坛优秀回答者
关注者: 303
你好,我不是很明白你的意思!我不知道何为算法,我的程序的计算过程是每一步得到一个结果,然后用上一个 ...
你的计算过程中主要用的都是基本数值计算函数,如果没有产生很大的数据一般不必太担心误差。
<h1 style="color:# 麦片财富积分
你的计算过程中主要用的都是基本数值计算函数,如果没有产生很大的数据一般不必太担心误差。 ...
谢谢你的耐心解答,对的,数据不大,matlab计算的结果就看不出问题了。我是发现这个默认的精度已经不够达到我想要的精度,所以想问问有没有提高计算精度的方法。其实我计算的数据是很大的,比如l1=23.,是要代入这样的数据计算的。
论坛优秀回答者
关注者: 303
谢谢你的耐心解答,对的,数据不大,matlab计算的结果就看不出问题了。我是发现这个默认的精度已经不够达 ...
你怎么发现精度不够的?
<h1 style="color:# 麦片财富积分
你怎么发现精度不够的?
计算过程中的数据一对比,我就发现了,有些结果应该是0.,但是计算结果却是0.8,最后两位就出问题了,所以我想知道有没有更高精度的计算方法,程序中应该怎么加
论坛优秀回答者
关注者: 303
|此回复为最佳答案
本帖最后由 kaaaf123 于
15:34 编辑
计算过程中的数据一对比,我就发现了,有些结果应该是0.,但是计算结果却是0.8, ...
你可以试试看这个工具:
http://www.advanpix.com/
另外符号计算工具箱的vpa函数也可以指定运算精度,不过性能比较低
<h1 style="color:# 麦片财富积分
你可以试试看这个工具:
http://www.advanpix.com/
另外符号计算工具箱的vpa函数也可以指定运算精度,不过 ...
非常感谢你的耐心和你的详细的解答!最后你说vpa函数,我只用这个函数查看过计算结果,还不知道具体怎么用,可以给我举个例子吗?
论坛优秀回答者
关注者: 303
非常感谢你的耐心和你的详细的解答!最后你说vpa函数,我只用这个函数查看过计算结果,还不知道具体怎么 ...
用法看帮助,应该很清楚
站长推荐 /3
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区}

我要回帖

更多关于 链路预测 matlab 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信