|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ N6 v5 Q# s5 B+ L今天想要解决一个问题,上网查了很久都没有得到满意的结果,比较失望,不过先把我对format 函数的理解记下来。
7 k# L& s1 M! x8 I2 [, y3 s/ w/ F& D) ` E7 A# q$ g' \* N, M0 W1 w1 \, P j
我发现在MATLAB中想要控制输出格式中小数点后的位数是一件比较难的事情,比如你想让所有输出的数字小数点后都保留两位,这是一件非常难的事情,大致有以下几种解决办法:9 S1 a ?0 |$ Z, ]- O" s6 l
" b- W% n A8 Y
1、最好的方法是使用 round 函数,但是使用这个函数的缺点是:该函数是的显示成为需要位数但必须付出截掉后面所有数字的代价,这样再次计算的时候就不精确。
7 g1 T8 E3 A6 }/ _5 `: e( t! K3 C% \2 H
eg. a=1/3=0.33333333..... 想要保留小数点后两位,通过round函数保留后 a1=0.33; 但是保留后的数值a1彻底改变的a的大小;也就是存在这样的问题 3*a=1;但是 3*a1=0.99。& t: w$ r9 c6 n4 N4 E
; H2 b& g8 O" x
2、digits+vpa 方法
, F4 M1 W0 l6 a+ w% @ \4 V
3 t0 Y! t7 {1 T$ f/ |2 \& o. ] 这种方法也可是达到保留小数的目的,但是经过vpa 命令之后,所保留的原数变成了符号函数。。。。这个就有点不好了,符号数计算时间大大长于数值数(这个词好像很不专业。。。呵呵),而且vpa命令所控制的长度指的是 有效数字,而不是小数点后的数字。。。也就是小数点以前的数字如果不一样,那么小数点后的数字肯定也不一样的,总之,很麻烦。
( \0 V# z# s) {: h1 Y6 V9 k. b" \/ T2 z, Z/ U1 k8 h' o
3、用 format 命令
7 i- {* C! q4 j/ _. T
; [5 R2 m/ P5 e* G" u 这是常用的方法,一般情况下 format short ,小数点后保留4位,还有一些其他的表示方法,这里不再多说,关键问题是,当小数点后数字大于1000以后,MATLAB会自动使用科学计数法。。。。也就是说 1234.5678,并不会显示成 1234.5678,而只会显示成 1.2345e3,实际上是省略了后面三位数。。。虽然计算的时候不会错。。。但是要导出数据时却会遇到很多麻烦。。。真是懊恼。。。( ~9 \3 a& E9 Y7 K8 w
+ R$ N1 N* A5 M2 [! Z2 [请哪位大侠帮我解释解释困扰 说了半天我就想知道 在matlab 种是否可以 不用科学计数法 完整的显示出 大于 1000而小数点后又有四位的数字,谢谢 ! |
|