kzft                  package:kzft                  R Documentation

_K_o_l_m_o_g_o_r_o_v-_Z_u_r_b_e_n_k_o _F_o_u_r_i_e_r _t_r_a_n_s_f_o_r_m

_D_e_s_c_r_i_p_t_i_o_n:

     Kolmogorov-Zurbenko Fourier transform is an iterative moving
     average of the Fourier transform.

_U_s_a_g_e:

     kzft(x, m, k, p=1, n=1)
     coeff.kzft(m,k)
     transfun.kzft(m,k,lamda=seq(-0.5,0.5,by=0.01),omega=0)

_A_r_g_u_m_e_n_t_s:

       x: A vector of the time series

       m: Length of the window size of the KZFT

       k: Number of iterations of the KZFT

       p: Percentage of overlap between two intervals

       n: Multiple frequency rate of Fourier frequencies

   lamda: A vector of frequencies

   omega: A frequency of the transfer function

_D_e_t_a_i_l_s:

     Kolmogorov-Zurbenko Fourier transform (KZFT) was first introduced
     in Zurbenko (1986). It is an iterative moving average of the
     Fourier transform.  Regular Fourier transform has an energy
     leakage around the Fourier frequencies. KZFT may overcome the
     leakage by k degrees less where k is the number of iterations of
     the KZFT. Due to the property of KZ statistics, KZFT shows strong
     resistance to noise and can be applied to nonstationary processes
     and random fields. Zurbenko showed that KZFT has the closest to
     the optimal mean square error and very strong resistance to noise
     in the frequency domain.

_R_e_f_e_r_e_n_c_e_s:

     I. G. Zurbenko, 1986: The spectral Analysis of Time Series.
     North-Holland, 248 pp.

     I. G. Zurbenko, P. S. Porter, Construction of high-resolution
     wavelets, Signal Processing 65: 315-327, 1998.

_S_e_e _A_l_s_o:

     'kzp', 'kztp', 'kzw'.

_E_x_a_m_p_l_e_s:

     # example 1
     # coefficient of the kzft

     aa<-coeff.kzft(201,5);
     tt<-seq(1:1001)-501;
     zz<-cos(2*pi*0.025*tt);
     plot(zz*aa,type="l",xlab="time units", ylab="envelope coefficient", 
         main="coefficient of the kzft");
     lines(aa);
     lines(-1*aa);

     # example 2
     # transfer function of the kzft

     lamda<-seq(-0.1,0.1,by=0.001)
     tf1<-transfun.kzft(201,1,lamda,0.025)
     tf2<-transfun.kzft(201,5,lamda,0.025)
     matplot(lamda,cbind(log(tf1),log(tf2)),type="l",ylim=c(-15,0),ylab="", 
             main="transfer function of the kzft")

     #example 3

     t<-1:1000
     x<-cos(2*pi*(10/1000)*t)

     kzft.x1<-kzft(x,200,1,0.005)
     x1<-2*Re(kzft.x1$tf[,2])

     kzft.x2<-kzft(x,200,2,0.005)
     x2<-2*Re(kzft.x2$tf[,2])

     kzft.x3<-kzft(x,200,3,0.005)
     x3<-2*Re(kzft.x3$tf[,2])

     par(mfrow=c(2,2))
     plot(x,type="l",main="Original time series")
     plot(x1,type="l",main="kzft(200,1)")
     plot(x2,type="l",main="kzft(200,2)")
     plot(x3,type="l",main="kzft(200,3)")

     #example 4

     t<-1:1000
     x<-sin(2*pi*(10/1000)*t)

     kzft.x1<-kzft(x,200,1,0.005)
     x1<-2*Re(kzft.x1$tf[,2])

     kzft.x2<-kzft(x,200,2,0.005)
     x2<-2*Re(kzft.x2$tf[,2])

     kzft.x3<-kzft(x,200,3,0.005)
     x3<-2*Re(kzft.x3$tf[,2])

     par(mfrow=c(2,2))
     plot(x,type="l",main="Original time series")
     plot(x1,type="l",main="kzft(200,1)")
     plot(x2,type="l",main="kzft(200,2)")
     plot(x3,type="l",main="kzft(200,3)")

