回答編集履歴

1

ざっくりとしたコードとグラフ追記

2019/08/05 07:07

投稿

glp
glp

スコア102

test CHANGED
@@ -1,3 +1,73 @@
1
1
  fftでDC近傍(上のグラフの傾きはとても周波数の遅い成分と捉えます)を落とす必要があります。
2
2
 
3
3
  この周波数成分をを除きたいのならコードのF[0] から少しの範囲を0にして、逆fftすれば行けると思います。 どこまで0にする必要があるかは、周波数で決めてください。
4
+
5
+
6
+
7
+ ざっくりこんな感じ
8
+
9
+
10
+
11
+ ```python
12
+
13
+ import numpy as np
14
+
15
+ import matplotlib.pyplot as plt
16
+
17
+ #matplotlib inline
18
+
19
+ from scipy import signal
20
+
21
+
22
+
23
+ N = 2048 # サンプル数
24
+
25
+ dt = 0.01 # サンプリング周期
26
+
27
+ freq = 10 # 周波数
28
+
29
+ amp = 1 # 振幅
30
+
31
+ t = np.arange(0, N*dt, dt) # 時間軸
32
+
33
+ f = amp * np.sin(2*np.pi * freq*t) + 0.5 * freq*t # 実験用の正弦波
34
+
35
+ f0 = amp * np.sin(2*np.pi * freq*t) # 目標とする正弦波
36
+
37
+
38
+
39
+ F = np.fft.fft(f) # 高速フーリエ変換(FFT)
40
+
41
+ plt.subplot( 311)
42
+
43
+ plt.plot( f)
44
+
45
+
46
+
47
+ plt.subplot( 312)
48
+
49
+ plt.plot( np.abs( F))
50
+
51
+ F[ 0: 40] = 0.0 # 周波数低めをカット
52
+
53
+ plt.plot( np.abs( F))
54
+
55
+
56
+
57
+ rfft = np.fft.ifft( F) # 逆FFT
58
+
59
+
60
+
61
+ plt.subplot( 313)
62
+
63
+ plt.plot( np.abs( rfft))
64
+
65
+
66
+
67
+ plt.show()
68
+
69
+ ```
70
+
71
+
72
+
73
+ ![イメージ説明](388e76d3887c860c649511d5c599a41e.png)