Public Class MainForm ' ******************* ' 実行ボタン ' ******************* Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 実行ボタン.Click Const FFT_Len As Integer = 128 Dim ii As Integer Dim ss As String Dim ImTmData(FFT_Len - 1) As Complex Dim ImFrqData(FFT_Len - 1) As Complex Call DataSet(ImTmData) ' 時間軸のデータセット Sin波 Me.TextBox1.Clear() Me.TextBox1.AppendText("正変換 開始" & vbCrLf) Call CalcFFT(ImFrqData, ImTmData) ' ***** FFT(正変換) ***** For ii = 0 To FFT_Len - 1 ss = String.Format("{0:0.00000} {1:0.00000}i : Power= {2:0.00000}", ImFrqData(ii).xr, ImFrqData(ii).xi, ImAbs(ImFrqData(ii))) Me.TextBox1.AppendText(ss & vbCrLf) Next ii Me.TextBox1.AppendText("正変換 終了" & vbCrLf) For ii = 0 To FFT_Len - 1 ImTmData(ii) = ToCmp(0, 0) ' 念の為、クリア Next Me.TextBox1.AppendText(vbCrLf & vbCrLf) Me.TextBox1.AppendText("逆変換 開始" & vbCrLf) Call CalcFFT(ImTmData, ImFrqData, False) ' ***** FFT(逆変換) ***** For ii = 0 To FFT_Len - 1 ss = String.Format("{0:0.00000} {1:0.00000}i : Power= {2:0.00000}", ImTmData(ii).xr, ImTmData(ii).xi, ImAbs(ImTmData(ii))) Me.TextBox1.AppendText(ss & vbCrLf) Next ii Me.TextBox1.AppendText("逆変換 終了" & vbCrLf) End Sub ' **************************** ' Sin波の生成 ' **************************** Sub DataSet(ByRef xRlt() As Complex) Const FHz As Double = 160.0# ' 生成する周波数fHz Const Fs As Double = 5120.0# ' サンプリング周波数 Const NN As Integer = 128 ' データ数 Dim ii As Integer For ii = 0 To NN - 1 xRlt(ii).xr = Math.Sin(2.0 * Math.PI * FHz * ii / Fs) xRlt(ii).xi = 0 Next ii End Sub End Class