|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( L; M) [) o$ q7 ]* Q- M6 G5 X5 Z' R
今天想要解决一个问题,上网查了很久都没有得到满意的结果,比较失望,不过先把我对format 函数的理解记下来。
& Q7 n( D; l' [; X3 C/ E- r! I* Z' s, a# Y+ F7 i5 y f
我发现在MATLAB中想要控制输出格式中小数点后的位数是一件比较难的事情,比如你想让所有输出的数字小数点后都保留两位,这是一件非常难的事情,大致有以下几种解决办法:
7 `7 ?+ J) B1 |: l: g+ M7 K1 p, m3 v2 N$ f0 n* R
1、最好的方法是使用 round 函数,但是使用这个函数的缺点是:该函数是的显示成为需要位数但必须付出截掉后面所有数字的代价,这样再次计算的时候就不精确。
* Y, p( V9 z5 t$ V; p$ U7 m; }/ w3 A" B" u. c/ n5 }
eg. a=1/3=0.33333333..... 想要保留小数点后两位,通过round函数保留后 a1=0.33; 但是保留后的数值a1彻底改变的a的大小;也就是存在这样的问题 3*a=1;但是 3*a1=0.99。
! Y' h" I3 |2 z6 N, n H9 M3 u1 {2 J1 f( ^# W A! b
2、digits+vpa 方法
9 |( c# h* g* \( e- z* e" b7 M- r0 W" v# s
这种方法也可是达到保留小数的目的,但是经过vpa 命令之后,所保留的原数变成了符号函数。。。。这个就有点不好了,符号数计算时间大大长于数值数(这个词好像很不专业。。。呵呵),而且vpa命令所控制的长度指的是 有效数字,而不是小数点后的数字。。。也就是小数点以前的数字如果不一样,那么小数点后的数字肯定也不一样的,总之,很麻烦。
. {$ L- q# d, L) G+ M2 G
7 w% |& j4 m$ b6 ^- E 3、用 format 命令. h8 ^2 \. |; A
: K8 S% K! \( L2 G$ i& R: s* o
这是常用的方法,一般情况下 format short ,小数点后保留4位,还有一些其他的表示方法,这里不再多说,关键问题是,当小数点后数字大于1000以后,MATLAB会自动使用科学计数法。。。。也就是说 1234.5678,并不会显示成 1234.5678,而只会显示成 1.2345e3,实际上是省略了后面三位数。。。虽然计算的时候不会错。。。但是要导出数据时却会遇到很多麻烦。。。真是懊恼。。。
/ j; x8 B! J" |' r; |. D$ K% D
. I. _$ ?! E. `8 U2 z/ r请哪位大侠帮我解释解释困扰 说了半天我就想知道 在matlab 种是否可以 不用科学计数法 完整的显示出 大于 1000而小数点后又有四位的数字,谢谢 ! |
|