У меня есть простая цифровая система, которая имеет вход x (n) = u (n) - u (n-4).
Я пытаюсь найти выход y (n) с помощью функции conv () из пакета «сигнал» или функции свертки () из пакета «статистика» и построить график зависимости y (n) от n для -10 ≤ n ≤ 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 для этой цели и мог бы дать несколько советов. Заранее спасибо.