LibreOfficeの6.3では,LibreOffice Calcにフーリエ解析(離散フーリエ変換)が実装されました.
MSExcel(2013を指す;以下同じ)には以前からフーリエ解析の機能がありましたが,LibreOffice Calcにはありませんでした.LibreOffice派の私としてはそれがちょっと残念でした.ところが,LibreOfficeの6.3でついにフーリエ解析が実装されることになったのです(リリースノート).
6月21日時点ではまだベータ版の段階ですが,さっそくインストールしてみます(ベータ版は製品版とは独立にインストールできるようです).
LibreCalcにおいては,離散フーリエ変換(DFT)は関数として実装されています.とは言っても[データ]-[統計]-[Fourier Analysis]でダイアログが表示されますので,そちらを使うのが便利でしょう(メニューアイテムやダイアログはそのうち日本語化されるはずです).
とりあえず何も考えずに,入力データ範囲と出力先だけを設定して出力してみましょう.
はい,出てきました.MSExcelとは出力形式が異なっていて,複素数の実部と虚部に対する実数が別の列に出力されています.これは好き嫌いがあるかもしれません.またDFTには係数の流儀がいくつかありますが,ここでは変換時には係数が1で,逆変換時に1/Nを乗じる流儀が採用されています.この点はMSExcelと同じです.
さらに,(MSExcelにはない)以下の機能も備えられています.
- MSExcelではデータ数が2のべき乗(かつ4096以下)という制限がありましたが,LibreCalcでは(2つのアルゴリズムを実装しているので)そのような制限はないようです.
- 出力を極座標表示させることができます.ダイアログの[Output in polar form]にチェックを入れるか,FOURIER関数の4番目の引数にTRUE(1)を設定します.
- DFTの計算においては,本来0であるべき値が(計算誤差の積み重ねによって)小さな値をもつことがあります.極座標表示をさせる場合は,[Minimum magnitude for polar form output (in dB)]に値を設定することによって,絶対値がそれに満たない値を0に切り捨てることができます.ここでのdBはパワースペクトル(絶対値の2乗)に対するものではなく絶対値そのものに対するものですので,10倍が(20dBではなくて)10dBになります.たとえば絶対値0.001未満を切り捨てるには,-30dBと入力します.
これらを駆使した例も挙げておきましょう.
最後に余談を一つ.FOURIER関数の出力は,行列式(数学の行列式ではない)になります.その扱い方を忘れがちですのでついでにメモしておきます.
- 行列式全体を選択するには,範囲内のどこかにカーソルを合わせて Ctrl+/ を押す.
- 編集後には,Shift+Ctrl+Enter で反映させる.
それでは素敵なフーリエ生活をお送り下さい!