#### example : composite of two components having different frequencies
## define vertex coordinate
x <- y <- seq(0, 1, length=30)
xy <- expand.grid(x=x, y=y)
## weighted adjacency matrix by Gaussian kernel
## for connecting vertices within distance 0.04
A <- adjmatrix(xy, method = "dist", 0.04)
## signal
# high-frequency component
signal1 <- rep(sin(12.5*pi*x - 1.25*pi), 30)
# low-frequency component
signal2 <- rep(sin(5*pi*x - 0.5*pi), 30)
# composite signal
signal0 <- signal1 + signal2
# noisy signal with SNR(signal-to-noise ratio)=5
signal <- signal0 + rnorm(900, 0, sqrt(var(signal0) / 5))
# graph with signal
gsig <- gsignal(vertex = cbind(xy, signal), edge = A, edgetype = "matrix")
# \donttest{
# display of absolute values of the graph Fourier coefficients vs the eigenvalues
gftplot(gsig)
gftplot(gsig, K=5, size=3)
outgft <- gftplot(gsig, K=5, plot=FALSE)
outgft$eigenvalues
# }
# graph Fourier decomposition
out <- gfdecomp(gsig, K=4)
names(out)
# display of a signal, the extracted low- and high-frequency components by GFD
gplot(gsig, size=3)
gplot(gsig, out$fc[[1]]+out$fc[[2]], size=3)
gplot(gsig, out$fc[[3]]+out$fc[[4]], size=3)
Run the code above in your browser using DataLab