« #深イイ話 徳井さんが一番会いたいダンサーとして東京ゲゲゲイが登場。あ、ゲゲゲイの鬼太郎のダンサーか! | トップページ | Silicon LabsのThunderboard™ React Derby ミニチュア・カー・キットに衝撃を受ける、、、Bluetooth+センサのキットとくればロボットカーと思いきや、、、 »

2018年2月 6日 (火)

Excel VBAで複素数演算(一次方程式・FFT他, Numerical Recipes移植)、フィッティング(非線形含む)、ルンゲクッタ8次(DOP853)などが使えるライブラリ その2: FFTライブラリ

昨日の続き。今回はFFT。
Sub FFT(cdata() As Complex, nn As Long, isign As Integer)
のようにサブルーチンとして宣言されています。
まずは複素数のデータ配列を準備します。2のべき乗個(Longで宣言)のデータが必要です。
Dim z1() as Complex
Dim n as Long
n=4    ' 2のべき乗
Redim z1(n)
のように宣言して、データをいれ、
Call FFT(z1, n, 1)
のように呼び出します。z1にデータが上書きされます。
最後の1を-1にすると逆変換になりますが、
データ個数nでは割られていません!必要ならば後で自ら割る必要があります。
(これはNumerical Recipesのルーチンの仕様です)
なので変換→逆変換を繰り返すと元に戻らずにn倍された値になります。
例題:
    z1(1) = ToComplex(1#, 2#)
    z1(2) = ToComplex(2#, 3#)
    z1(3) = ToComplex(3#, 4#)
    z1(4) = ToComplex(4#, 5#)
 
    Call FFT(z1, n, 1)
    Call FFT(z1, n, -1)
 
    For i = 1 To n
        z1(i) = Cdiv(z1(i), ToComplex(CDbl(n), 0#))
    Next i
    For i = 1 To n
        Debug.Print z1(i).x & "+i" & z1(i).y
    Next i
とすると元に戻ります。
ライブラリ本体:
またルンゲクッタ8次のDOP853ルーチンとそのドライバ。
メルセンヌツイスタ用

« #深イイ話 徳井さんが一番会いたいダンサーとして東京ゲゲゲイが登場。あ、ゲゲゲイの鬼太郎のダンサーか! | トップページ | Silicon LabsのThunderboard™ React Derby ミニチュア・カー・キットに衝撃を受ける、、、Bluetooth+センサのキットとくればロボットカーと思いきや、、、 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/512682/66357811

この記事へのトラックバック一覧です: Excel VBAで複素数演算(一次方程式・FFT他, Numerical Recipes移植)、フィッティング(非線形含む)、ルンゲクッタ8次(DOP853)などが使えるライブラリ その2: FFTライブラリ:

« #深イイ話 徳井さんが一番会いたいダンサーとして東京ゲゲゲイが登場。あ、ゲゲゲイの鬼太郎のダンサーか! | トップページ | Silicon LabsのThunderboard™ React Derby ミニチュア・カー・キットに衝撃を受ける、、、Bluetooth+センサのキットとくればロボットカーと思いきや、、、 »

2018年5月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
フォト
無料ブログはココログ