如何获得科学记数法的指数在Matlab(How to get Exponent of Scienti

2019-06-24 04:49发布

当数字是非常小的,MATLAB会自动显示在他们科学记数法格式。

例:

A = rand(3) / 10000000000000000;

A =

  1.0e-016 *

    0.6340    0.1077    0.6477
    0.3012    0.7984    0.0551
    0.5830    0.8751    0.9386

有一些内置的函数返回的指数? 喜欢的东西: getExponent(A) = -16

我知道这是有点愚蠢的问题,但我需要检查数百矩阵,我似乎无法弄清楚。

谢谢您的帮助。

Answer 1:

基本的数学可以告诉你:

floor(log10(N))

一个数的底数10告诉你小数点前的数位大约是如何在这个数字。

例如, 999871234598237549.998E+016

log10(99987123459823754)16.9999441 ,它的地板是16 -这基本上可以告诉你“在科学记数法的指数是16,非常接近被17”。

地板始终几轮下来,所以你不必担心小指数:

0.000000000003754 = 3.754E-012
log10(0.000000000003754) = -11.425
floor(log10(0.000000000003754)) = -12


Answer 2:

您可以使用log10(A) 用来打印出的指数将在A中的震级最大的指数。如果你只关心少数(<1),可以使用

min(floor(log10(A)))

但是,如果有可能他们是大太,你想要的东西,如:

a = log10(A);
[v i] = max(ceil(abs(a)));
exponent = v * sign(a(i));

这个发现的最大绝对指数,并返回。 因此,如果A = [1e-6 1e20]它会返回20。

实际上,我不知道Matlab的相当如何决定什么指数打印输出时使用。 显然,如果是接近1(如A = [100, 203]那么它不会使用的指数在所有但这种方法会返回2.你不得不玩的有点制定出准确什么印刷基质的规则。



文章来源: How to get Exponent of Scientific Notation in Matlab