考虑以下内容(来自signal::filter
帮助页面):
require(signal)
bf <- butter(5, 0.1)
t <- seq(0, 1, len = 100)
x <- sin(2*pi*t*2.3) + 0.25*rnorm(length(t)) + 5
y <- filtfilt(bf, x)
z <- filter(bf, x)
plot(t, x, ylim = c(0, max(x)))
lines(t, y, col="red")
lines(t, z, col="blue")
lines(t, stats::filter(x, rep(1/10, 10)), col = "green")
legend("bottomright", legend = c("data", "filtfilt", "filter", "SMA"),
pch = 1, col = c("black", "red", "blue", "green"), bty = "n")
可以看出,红色和蓝色(即filter和filtfilt)都起源于(0,0)。但是,我希望它们从给定的初始值开始,例如init = mean(x[1:10])
. 无论我如何在 中提供所述约束filter(bf, x)
,无论是整数还是向量,我要么没有结果,要么length of 'init' must equal length of 'filter'
. 作为所需输出的比较,提供了一个简单的移动平均线(绿色)。谢谢你。