前提
以下のコードと同様にして、バンドストップフィルタを設計したいです。
実現したいこと
現状は以下のコードにより、カットオフ周波数間の帯域のみをのこし、それ以外を0にする処理を行なっております。
F2[(freq > fc)] = 0
F2[(freq < fc2)] = 0
逆の処理として、カットオフ周波数間のみを0にする方法を教えていただきたいです。
理想としては F2[(freq > fc) and (freq < fc2)] = 0 のような処理をしたい
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
N = len(df) # サンプル数 dt = 0.004 # サンプリング間隔 # fq1, fq2 = 5, 40 # 周波数 fc = 60 # カットオフ周波数 fc2 = 0.2 t = np.arange(0, N*dt, dt) # 時間軸 freq = np.linspace(0, 1.0/dt, N) # 周波数軸 # F3=np.fft.fft(df[4]) for z in df.columns: F = np.fft.fft(df[z]) # 正規化 + 交流成分2倍 F = F/(N/2) F[0] = F[0]/2 df4[z]=F # 配列Fをコピー F2 = F.copy() # ローパスフィル処理(カットオフ周波数を超える帯域の周波数信号を0にする) F2[(freq > fc)] = 0 F2[(freq < fc2)] = 0 df5[z]=F2 # 高速逆フーリエ変換(時間信号に戻す) f2 = np.fft.ifft(F2) # 振幅を元のスケールに戻す f2 = np.real(f2*N) df3[z]=f2
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー