VBAのプログラムを元に、PythonでDFTを実行したいと考えています。
python
1def dft (x, N): 2 X = [0.0] * N 3 sr, si = 0,0 4 fr, fi = [],[] 5 for i in range(N): 6 for k in range(N): 7 wr = np.cos(2 * np.pi * k * i / N) 8 wi = - np.sin(2 * np.pi * k * i / N) 9 sr = sr + x[k] * wr 10 si = si + x[k] * wi 11 12 fr = sr.real 13 fi = si.imag 14 15 X[i] = np.math.sqrt(fr*fr+fi*fi) 16 return X
このようなプログラムを以下のVBAのプログラムを参考に作成しました。
VBA
1Dim inr(16384) 2Dim fr(16384), fi(16384) 3z = Cells(1, "b") 'sample time 4n = Cells(2, "b") 'DATA size 5'Data Read 6For i = 0 To n - 1 7inr(i) = Cells(i + 3, 2) 8Next i 9Pi = 3.14159265358979 10'DFT 11For i = 0 To n - 1 12sr = 0 13si = 0 14For k = 0 To n - 1 15wr = Cos(2 * Pi * k * i / n) 16wi = -Sin(2 * Pi * k * i / n) 17sr = sr + inr(k) * wr 18si = si + inr(k) * wi 19Next k 20fr(i) = sr 'Re 21fi(i) = si 'Im 22Next i 23'Data Out 24For i = 0 To n - 1 25Cells(i + 2, 4) = i / z / n 26Cells(i + 2, 5) = Sqr(fr(i) * fr(i) + fi(i) * fi(i)) / n 27Next i
自分で考えたPythonのプログラムが同じように実行できません。
どこで違ってきているのでしょうか。
また、
VBA
1fr(i) = sr 'Re 2fi(i) = si 'Im
これをPyhtonでどのように表現したら良いかがわかっていません
よろしくお願いいたいます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。