swh:1:snp:3a44eb759780145deea094ac2a25c5049546a085
Tip revision: 9bf6f03951ba62e84fc9c6e1728865f199ce4bb0 authored by Han Lin Shang on 01 November 2018, 18:40:03 UTC
version 5.2
version 5.2
Tip revision: 9bf6f03
hyman.filter.R
hyman.filter <- function(z)
{
n <- length(z$x)
ss <- (z$y[2:n] - z$y[1:(n - 1)])/(z$x[2:n] - z$x[1:(n - 1)])
S0 <- c(ss[1], ss)
S1 <- c(ss, ss[n - 1])
sig <- z$b
ind <- (S0 * S1 > 0)
sig[ind] <- S1[ind]
ind <- (sig >= 0)
if (sum(ind))
z$b[ind] <- pmin(pmax(0, z$b[ind]), 3 * pmin(abs(S0[ind]),
abs(S1[ind])))
ind <- !ind
if (sum(ind))
z$b[ind] <- pmax(pmin(0, z$b[ind]), -3 * pmin(abs(S0[ind]),
abs(S1[ind])))
z
}