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+センサのキットとくればロボットカーと思いきや、、、 »
「パソコン・インターネット」カテゴリの記事
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。(2023.03.27)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(1)複素行列を定義して一次方程式や逆行列、行列式などを計算する。(2023.03.24)
- KeysightのADSで位相を±180°に限らずに連続にする関数をよく聞かれるがいつも忘れる…unwrap()だ。PythonのNumPyでもあるので(matlabにもある)いい加減に覚えたい。とりあえずPythonでやってみて記憶する。(2023.03.02)
- 50万人が毎年受ける試験で採用、“謎”のプログラミング言語「DNCL」という記事を見た。大学入試センターで2022年1月に出している仕様(日本語プログラムぽい)と、令和7年度試験の問題作成の方向性,試作問題等で出している仕様(Pythonを日本語にしたっぽい)違うのか…(2023.03.01)
「学問・資格」カテゴリの記事
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。(2023.03.27)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(1)複素行列を定義して一次方程式や逆行列、行列式などを計算する。(2023.03.24)
- 高周波(RF・マイクロ波・ミリ波・5G)関連ニュース(3/16) IEEE Microwave Magazineは女性マイクロ波研究者特集、Microwave Journalで285GHz帯で30GHz帯域のOTA測定!QorvoがUWB室内ナビのデモ、STMとonsemiのBluetooth新商品、IDTechExの6Gレポート、など。(2023.03.16)
- KeysightのADSで位相を±180°に限らずに連続にする関数をよく聞かれるがいつも忘れる…unwrap()だ。PythonのNumPyでもあるので(matlabにもある)いい加減に覚えたい。とりあえずPythonでやってみて記憶する。(2023.03.02)
「日記・コラム・つぶやき」カテゴリの記事
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。(2023.03.27)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(1)複素行列を定義して一次方程式や逆行列、行列式などを計算する。(2023.03.24)
- BingのAIチャットに最大の素数はいくつ?と聞くと、存在しないが今知られている最大の素数は2^89589933-1だと答えた。が、これは引用している記事が誤植していて、実際は2^82589933-1だ...間違った記事を引用すると間違った答えになる。英語で聞くと1つ前のメルセンヌ素数に…(2023.03.17)
- 高周波(RF・マイクロ波・ミリ波・5G)関連ニュース(3/16) IEEE Microwave Magazineは女性マイクロ波研究者特集、Microwave Journalで285GHz帯で30GHz帯域のOTA測定!QorvoがUWB室内ナビのデモ、STMとonsemiのBluetooth新商品、IDTechExの6Gレポート、など。(2023.03.16)
トラックバック
この記事へのトラックバック一覧です: Excel VBAで複素数演算(一次方程式・FFT他, Numerical Recipes移植)、フィッティング(非線形含む)、ルンゲクッタ8次(DOP853)などが使えるライブラリ その2: FFTライブラリ:
« #深イイ話 徳井さんが一番会いたいダンサーとして東京ゲゲゲイが登場。あ、ゲゲゲイの鬼太郎のダンサーか! | トップページ | Silicon LabsのThunderboard™ React Derby ミニチュア・カー・キットに衝撃を受ける、、、Bluetooth+センサのキットとくればロボットカーと思いきや、、、 »
コメント