入力x(n)= u(n)-u(n-4)を持つ単純なデジタルシステムがあります。
'signal'パッケージのconv()関数または'stats'パッケージのconvolve()関数を使用して出力y(n)を見つけ、-10≤n≤の場合のy(n)対nをプロットしようとしています。 10.10。
これまでのところ、次のコードがあります。
library(signal)
n <- c(-10:10) # Time index
x <- c(rep(0, 10), rep(1, 4), rep(0, 7)) # Input Signal
h1 <- c(rep(0, 11), 0.5, rep(0, 9)) # Filter 1
h2 <- 0.8^n # Filter 2
h2[0:11] <- 0 #
system <- data.frame(n, x, h1, h2)
y <- conv(x + conv(x, h1), h2) # Output Signal
system <- transform(system, y=y[1:21])
plot(system$n, system$y)
私はこのプロットをチェックしました、そしてそれは非常に間違っています。畳み込みを行うと、ベクトルのリサイクルがいくらかあり、conv()関数の出力が元の時間インデックスと一致していないように見えると思います。ここでロジックを修正する方法がわからないようです。conv(n、m)関数が長さ(m + n)-1のベクトルを返すことに気付きましたが、このベクトルを時間インデックスベクトルに簡単に一致させる良い方法はありますか?
これには、デジタル信号処理とRでのコーディングに関するある程度の知識が必要です。誰かがこの目的でRを使用した経験があり、いくつかの指針を与えることができれば素晴らしいと思います。前もって感謝します。