質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2374閲覧

Pythonで信号処理

iwhr

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2018/06/10 09:10

編集2018/06/10 09:12

閲覧いただきありがとうございます.
PythonでFIRフィルタを設計しようとしています.

# coding: utf-8 import csv import numpy as np from scipy import signal import matplotlib.pyplot as plt import pandas as pd #csvファイルの読み込み data = pd.read_csv('out3.csv') #csvファイルの読み込み # サンプルデータ n = len(data) # データ数 dt = 0.05 # サンプリング間隔 fn = 1/(2*dt) # ナイキスト周波数 t = data.iloc[:,0] t1 = np.array(t) y = data.iloc[:,2] z = np.array(y) # パラメータ設定 fp = 2 # 通過域端周波数[Hz] fs = 3 # 阻止域端周波数[Hz] gpass = 1 # 通過域最大損失量[dB] gstop = 40 # 阻止域最小減衰量[dB] # 正規化 Wp = fp/fn Ws = fs/fn # ローパスフィルタで波形整形 # バターワースフィルタ N, Wn = signal.buttord(Wp, Ws, gpass, gstop) b1, a1 = signal.butter(N, Wn, "low") y1 = signal.filtfilt(b1, a1, z) # FIR フィルタ a2 = 1 numtaps = n b2 = signal.firwin(numtaps, Wp, window="hann") y2 = signal.lfilter(b2, a2, z) delay = (numtaps-1)/2*dt # プロット plt.figure() plt.plot(t1, z, "b") plt.plot(t1, y1, "r", linewidth=2, label="butter") plt.plot(t1-delay, y2, "g", linewidth=2, label="fir") plt.xlim(0, 25) plt.legend(loc="upper right") plt.xlabel("Time [s]") t.ylabel("Amplitude") # plt.show()

イメージ説明

このプログラムを実行すると図のようにFIRフィルタの時間がずれてしまいます.これを修正するにはどうしたらよいでしょうか?
よろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namnium1125

2018/06/10 09:24 編集

(私はFIRフィルタの原理等は一切わかりません。ので、的外れでしたらすみません。) 直感ですが、plt.plot(t1-delay, y2, "g", linewidth=2, label="fir")の中の-delayによって範囲が変更されているのが原因だと考えられます。そもそもこれは意図した結果という可能性はないのでしょうか?(つまり、本来ずれるべきところを、「ずれている」と認識しているのではないか?という意味です。) そのあたり(ほしい結果はどういうものかなど)を明記していただけると幸いです。 近似曲線等があるならば話は別ですが、読み込んだデータならばそれ以上どうしようもない気がします。
iwhr

2018/06/10 10:00 編集

ご指摘ありがとうございます.緑のfirも赤色のbutterの曲線になるような結果がほしいです.(曲線がほぼ重なり合う)恐らくフィルタの原理をあまり理解していないかもしれません.自分でも,もう少し考えてみたいと思います.
ozwk

2018/06/12 10:21

そもそもなぜdelay入れているんですか?
guest

回答1

0

フィルタをかけているので時間遅れが発生します.
MATLABの資料ですが,これなどが参考になります

投稿2021/10/08 00:44

dark-eater-kei

総合スコア1248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問