如何改变数据的有效数字位数
请教一下:如何改变数据的有效数字位数。比如:如何将x=0.001200023变成0.0012
谢谢! 原帖由 zfx620 于 2007-1-12 12:23 发表
请教一下:
如何改变数据的有效数字位数。比如:如何将x=0.001200023变成0.0012
谢谢!
只能修改显示精度(help format),不能修改计算精度 计算精度没有必要修改。 我就要修改计算精度,因为涉及数值积分变换, 原帖由 zfx620 于 2007-1-12 13:20 发表
我就要修改计算精度,因为涉及数值积分变换,
不是告诉你:不能修改,也没有必要修改吗? 数值积分精度问题设置步长就可以了 eight,如果没有必要修改,那我修改它干什么!!
就是由于很小的数造成Laplace数值变换解不稳定才想的办法呀
回复
请先把问题贴出来.光凭跟你解释, 可能你还是不能理解eight的意思.
[ 本帖最后由 xjzuo 于 2007-1-12 18:57 编辑 ]
asd
我也希望有高手能解决同样问题即当我在Simulink下设置一个参数,如double型constanta=0.2602时,通过一个直接输入输出的S函数模块,即Y=X运算后,用short型scope显示为0.12602,然而,用把该数据保存(save 1.dat a -ascii)下来分析发现,其值为 2.6020001e-001
同时,如果把该模型作成闭环,即Y作为下一刻的输入,保存下来的数据为如下所示,以此递增,似乎有一定的量差在数据的运算过程中
2.6020001e-0012.6020001e-0012.6020002e-0012.6020002e-0012.6020003e-001 ...
2.6020004e-0012.6020004e-0012.6020005e-0012.6020005e-0012.6020006e-001 ...
2.6020007e-0012.6020007e-0012.6020008e-0012.6020008e-0012.6020009e-001 ...
2.6020010e-0012.6020010e-0012.6020011e-0012.6020011e-0012.6020012e-001 ...
2.6020013e-0012.6020013e-0012.6020014e-0012.6020014e-0012.6020015e-001 ...
2.6020016e-0012.6020016e-0012.6020017e-0012.6020017e-0012.6020018e-001 ...
2.6020019e-0012.6020019e-0012.6020020e-0012.6020020e-0012.6020021e-001 ...
[ 本帖最后由 ChaChing 于 2009-8-7 23:13 编辑 ]
回复
再次总结一下:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Matlab只进行强制性的双精度计算,也就是说计算精度不可改变.
改变结果的显示精度可用format, digits, vpa实现.
前者虽然在很多情形下被人们认为,其计算精度高,是一个优点。
但也可说是Matlab的一个缺点,因为某些情形下的计算这样处理会相当耗内存.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
至于程序编写时,要提高程序的计算精度,可按eight说的,调整步长.当然,
其实有时候也是为了得到更好的稳定性.
[ 本帖最后由 xjzuo 于 2007-1-14 10:28 编辑 ] 到底是要修改计算精度, 还是改变数据的有效数字位数?
不是可以如下式改变数据的有效数字位数?
x=0.001200023; xx=double(vpa(x,2));
还有计算精度真的是不可改变的吗?
Fixed-Point Toolbox中的int, int8, int16, int32, uint8, uint16, uint32这些不是吗?
待高人路过澄清!
回复 楼主 zfx620 的帖子
如何改变数据的有效数字位数。比如:如何将x=0.001200023变成0.0012谢谢
不是要保留小数点后4位吗,y=round(x*1e4)/1e4; 搞定!
vpa(y,10)=0,0012000000; 满意否?
页:
[1]