2012-05-06 14 views
5

数値が実際に小さい場合、MatlabはScientific Notationでフォーマットされたものを自動的に表示します。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

私はこれがまったく愚かな疑問だと知っていますが、私は何百もの行列をチェックする必要があり、それを理解できないようです。

ありがとうございました。

答えて

12

基本的な数学はあなたにそれを伝えることができます:

floor(log10(N)) 

数のログベース10は、小数点の前の桁数はその数である約どのように伝えます。例えば

999871234598237549.998E+016

log10(99987123459823754)ではの床が16で、16.9999441ある - 基本的には「科学的表記の指数が17であることに非常に近い16、である」を伝えることができました。あなたは小さな指数を心配する必要はありませんので、

フロアは常に、切り捨て:

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

あなたはlog10(A)を使用することができます。あなたが唯一の少数(< 1)気にしている場合、プリントアウトするために使用さ指数は、Aの最大の大きさの指数になります彼らが大きすぎるすることは可能であるならば、あなたは、

min(floor(log10(A))) 

しかしを使用することができます

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

これは最大絶対指数を見つけて返します。したがって、A = [1e-6 1e20]の場合は20が返されます。

Matlabが印刷時にどのような指数を使用するかは、実際どのように決定するのかは実際には分かりません。明らかに、Aが1に近い場合(例:A = [100, 203])、指数部はまったく使用されませんが、このソリューションは2を返します。マトリックスを印刷するための規則を正確に実行するには、ちょっと試してみる必要がありますあります。

関連する問題