当数字是非常小的,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
?
我知道这是有点愚蠢的问题,但我需要检查数百矩阵,我似乎无法弄清楚。
谢谢您的帮助。
基本的数学可以告诉你:
floor(log10(N))
一个数的底数10告诉你小数点前的数位大约是如何在这个数字。
例如, 99987123459823754
是9.998E+016
log10(99987123459823754)
是16.9999441
,它的地板是16
-这基本上可以告诉你“在科学记数法的指数是16,非常接近被17”。
地板始终几轮下来,所以你不必担心小指数:
0.000000000003754 = 3.754E-012
log10(0.000000000003754) = -11.425
floor(log10(0.000000000003754)) = -12
您可以使用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.你不得不玩的有点制定出准确什么印刷基质的规则。