I have an input sequence $x(n)$ and impulse sequence
\begin{equation}
h(n) = \begin{cases} 0 & \quad \text{when } n = 0 \\ .239052 & \quad \text{when } n = 1 \\1.3357\exp(-0.650286n) & \quad \text{when } n > 1\\ \end{cases}
\end{equation}
私は畳み込みを行い、$ y(n)= x(n)* h(n)$を得た。 $ y(n)$から$ n(n)$を逆にして、$ w(n)= y(n)* h(-n)$を逆フィルタリングしました。
これについて調査したところ、matlabの filtfilt
が簡単なオプションだが、これをCで実装しようとしている
だから私の質問は、最初の出力シーケンスをトリミングせずに$ y(n)$私は結果の漂流バージョンを取得しています(遅延があります)。
それは本当に必要なトリミングですか、私はここで何か間違っていますか?
もう1つの質問は、私が filtfilt
を使ったときに$ w(n)$シーケンスの開始と終了の両方にトランジェントがいくつか見えるということです。トランジェントが見えません。理由は、トランジェントを取り除くために、以下の論文に基づいて状態を調整します。
Gustafsson, F. "Determining the initial states in forward-backward filtering." IEEE® Transactions on Signal Processing. Vol. 44, April 1996, pp. 988–992.
要約する :
- トリミングは本当に必要ですか?
PS結果のデータをトリミングせずに添付された図は遅れがあります。後方フィルタリングの前に$ y(n)$シーケンスを調整すると結果が整列します。
- 過渡状態を解消するための初期状態を判断する方法。