長さがn で,a で始まりb で終わる等比数列の作り方は,
方法1:>> hoge = exp( linspace( log(a), log(b), n ) )
方法2:>> hoge = logspace( log10(a), log10(b), n )
の2 通りが考えられるが,方法1 の方が計算が速い.
ちなみにlinspace とlogspace の意味は,
11 から15 までの,単純に等間隔な5 個の数字.
10 の11 乗から10 の15 乗までの5 個の数字からなる等比数列.
なので,「11 から15 まで」としたいときはlogspace( log10(11), log10(15), 5 ) とする必要がある.
この2 通りの作り方に対して,数列の長さをいろいろ変えながら比較した結果:
横軸:数列の長さ(対数スケール),縦軸:計算時間
青線:方法1,赤線:方法2
計算環境:Lenovo ideapad U310 (Core i5-3317U 1.70GHz, 8.00GB, Windows 7 64bit),Matlab R2013b
a=1, b=10 として,1,000回の計算の平均値をとった
方法2 の方が,常に計算時間がかかっていることが分かる.
logspace は数列の長さが2048以上だと挙動が変わるっぽいが,詳細は不明.