| emd {EMD} | R Documentation |
This function performs empirical mode decomposition.
emd(xt, tt=NULL, tol=sd(xt)*0.1^2, max.sift=20, stoprule="type1",
boundary="periodic", smlevels=c(1), sm="none", spar=NA, weight=20,
check=FALSE, max.imf=10, plot.imf=TRUE, interm=NULL)
xt |
observation or signal observed at time tt |
tt |
observation index or time index |
tol |
tolerance for stopping rule of sifting |
max.sift |
the maximum number of sifting |
stoprule |
stopping rule of sifting |
boundary |
specifies boundary condition |
smlevels |
specifies which level of the IMF is obtained by smoothing other than interpolation. |
sm |
specifies whether envelop is constructed by smoothing spline. |
spar |
specifies user-supplied smoothing parameter of spline. |
weight |
the smoothness of spline is determined by weight times smoothing parameter of GCV. |
check |
specifies whether the sifting process is displayed. If check=TRUE, click the plotting area to start the next step. |
max.imf |
the maximum number of IMF's |
plot.imf |
specifies whether each IMF is displayed. If plot.imf=TRUE, click the plotting area to start the next step. |
interm |
specifies vector of periods to be excluded from the IMF's. |
This function performs empirical mode decomposition.
imf |
IMF's |
residue |
residue signal after extracting IMF's from observations xt |
nimf |
the number of IMF's |
Huang, N. E., Shen, Z., Long, S. R., Wu, M. L. Shih, H. H., Zheng, Q., Yen, N. C., Tung, C. C. and Liu, H. H. (1998) The empirical mode decomposition and Hilbert spectrum for nonlinear and nonstationary time series analysis. Proceedings of the Royal Society London A, 454, 903–995.
### Empirical Mode Decomposition
ndata <- 3000
tt2 <- seq(0, 9, length=ndata)
xt2 <- sin(pi * tt2) + sin(2* pi * tt2) + sin(6 * pi * tt2) + 0.5 * tt2
par(mfrow=c(3,1), mar=c(2,1,2,1))
try <- emd(xt2, tt2, boundary="wave")
### Ploting the IMF's
par(mfrow=c(3,1), mar=c(2,1,2,1))
X11(); par(mfrow=c(try$nimf+1, 1), mar=c(2,1,2,1))
rangeimf <- range(try$imf)
for(i in 1:try$nimf) {
plot(tt2, try$imf[,i], type="l", xlab="", ylab="", ylim=rangeimf,
main=paste(i, "-th IMF", sep="")); abline(h=0)
}
plot(tt2, try$residue, xlab="", ylab="", main="residue", type="l",
axes=FALSE); box()