| Title: | Sliding Window Discrete Fourier Transform (SWDFT) | 
| Version: | 1.0.0 | 
| Description: | Implements the Sliding Window Discrete Fourier Transform (SWDFT). Also provides statistical methods based on the SWDFT, and graphical tools to display the outputs. | 
| Depends: | R (≥ 3.3.0) | 
| License: | MIT + file LICENSE | 
| Encoding: | UTF-8 | 
| LazyData: | true | 
| Suggests: | testthat, fftwtools, fields, signal, nloptr, knitr, rmarkdown, devtools | 
| RoxygenNote: | 6.1.1 | 
| Imports: | stats, graphics | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2019-04-16 23:32:05 UTC; lee | 
| Author: | Lee F. Richardson [aut, cre] | 
| Maintainer: | Lee F. Richardson <leerichardson2013@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2019-04-17 04:22:46 UTC | 
Coefficients method for swdft_cosreg objects
Description
Coefficients method for swdft_cosreg objects
Usage
## S3 method for class 'swdft_mod'
coefficients(object, ...)
Arguments
| object | A swdft_cosreg object | 
| ... | optional arguments to match generic function | 
Complex Demodulation
Description
Complex Demodulation
Usage
complex_demod(x, f0, smooth = "butterworth", order = 5,
  passfreq = 0.1, match_swdft = FALSE, window_size = NULL)
Arguments
| x | numeric vector | 
| f0 | numeric scalar. Frequency to demodulate | 
| smooth | character. Type of smoothing to use, accepts either 'ma', 'double_ma', or 'butterworth' (the default) | 
| order | moving average parameter if 'smooth' argument equals 'ma' or 'double_ma'. Defaults to 5 | 
| passfreq | numeric scalar. Pass frequency used in butterworth low-pass filter. Defaults to .1 which corresponds to a pass frequency of 2 * f0. | 
| match_swdft | logical. Only used to demonstrate equivalence w/ SWDFT when a moving average filter is used. Otherwise, never used. | 
| window_size | defaults to NULL, only used when match_swdft=TRUE, so can ignore. | 
Value
An S3 'swdft_demod' object. See ?new_swdft_matching_demod for details.
References
Chapter 7 of 'Fourier Analysis of Time-Series' by Peter Bloomfield and this blog post: https://dankelley.github.io/r/2014/02/17/demodulation.html for the idea of using a butterworth filter.
Cosine signal with adjustable parameters
Description
Cosine signal with adjustable parameters
Usage
cosine(N, A = 1, Fr = 1, phase = 0)
Arguments
| N | signal length | 
| A | Amplitude | 
| Fr | Frequency: Number of cycles in a length N period | 
| phase | phase | 
Value
numeric vector with cosine function of x
Cosine bell data taper
Description
Cosine bell data taper
Usage
cosine_taper(n, p = 0.1)
Arguments
| n | length of time-series to taper | 
| p | proportion of ends to taper | 
Value
length n cosine bell taper w/ proportion p
Cosine regression
Description
Cosine regression
Usage
cosreg(x, f)
Arguments
| x | numeric. Signal. | 
| f | numeric. scalar or vector of frequencies to fit. | 
Value
S3 object of class 'swdft_cosreg'. See ?new_swdft_cosreg for details.
Covariance between two complex-numbered outputs
Description
Covariance between two complex-numbered outputs
Usage
cov_swdft_cnum(k, l, delta, n, sigma)
Arguments
| k | frequency of first coefficient | 
| l | frequency of second coefficient | 
| delta | window position shift of second coefficient | 
| n | window size | 
| sigma | white noise standard error | 
Value
complex-valued number of the covariance
Demodulate a Fourier Frequency with the SWDFT
Description
Demodulate a Fourier Frequency with the SWDFT
Usage
demod_swdft(a, k)
Arguments
| a | swdft | 
| k | frequency to demodulate | 
Dirichlet Kernel (Weight) for arbitrary summation indices
Description
Dirichlet Kernel (Weight) for arbitrary summation indices
Usage
dirichlet(x, phase = 0, a = 0, b = length(x) - 1)
Arguments
| x | numeric to evaluate | 
| phase | defaults to 0 | 
| a | start of summation index | 
| b | end of summation index | 
Value
sum of a complex exponential sum
Dirichlet Kernel
Description
Dirichlet Kernel
Usage
dirichlet_kernel(x, n, dw = FALSE)
Arguments
| x | variable evaluated by dirichlet kernel | 
| n | size of Dirichlet kernel | 
| dw | logical whether to add the Dirichlet Weight (DW) factor | 
Value
evaluation of the Dirichlet Kernel (D_n(x))
Fitted values method for swdft_cosreg objects
Description
Fitted values method for swdft_cosreg objects
Usage
## S3 method for class 'swdft_mod'
fitted(object, ...)
Arguments
| object | A swdft_cosreg object | 
| ... | optional arguments to match generic function | 
Extract amplitude and phase
Description
Extract amplitude and phase
Usage
get_aphi(x, S, L, f)
Arguments
| x | signal | 
| S | start parameter | 
| L | length pe | 
| f | frequency | 
Get range of frequencies to search
Description
Get range of frequencies to search
Usage
get_freq_range(a, kwidth)
Arguments
| a | 2D complex-valued array. The SWDFT to search | 
| kwidth | integer. the width of frequencies to search | 
Compute the log likelihood
Description
Compute the log likelihood
Usage
get_loglik(x, fitted, sigma, N)
Arguments
| x | signal | 
| fitted | fitted values | 
| sigma | estimated standard deviation | 
| N | length of x | 
Get the maximum DFT coefficient
Description
Get the maximum DFT coefficient
Usage
get_max_freq(x)
Arguments
| x | numeric vector | 
Value
numeric of largest frequency. Will be between 0 and .5
Get range of P's to search
Description
Get range of P's to search
Usage
get_p_range(phat, n, N, pwidth, type = "around_max")
Arguments
| phat | integer. Window position with largest SWDFT coefficient | 
| n | integer. window size | 
| N | integer. Signal length | 
| pwidth | integer. the range of window positions to search for each window size | 
| type | character. either 'around max' or 'fullp'. | 
Extract estimator of sigma
Description
Extract estimator of sigma
Usage
get_sigma(x, fitted, N)
Arguments
| x | signal | 
| fitted | fitted values | 
| N | length of x | 
Extract signal parameters
Description
Extract signal parameters
Usage
get_sl(n, p)
Arguments
| n | window size | 
| p | window position | 
Create taper for the SWDFT
Description
Create taper for the SWDFT
Usage
get_taper(n, taper, p)
Arguments
| n | window size | 
| taper | taper type. Can be either 'none' (default) or 'cosine' | 
| p | proportion to taper on each end, if cosine taper is used | 
Value
length n taper
Log Likelihood
Description
Log Likelihood
Usage
lcr_loglik(f, x, S, L, ftype = "full")
Arguments
| f | frequency | 
| x | signal | 
| S | start parameter | 
| L | length pe | 
| ftype | what to return | 
Local cosine regression
Description
Local cosine regression
Usage
local_cosreg(x, lmin = 6, pwidth = 5, kwidth = 1, verbose = FALSE)
Arguments
| x | numeric signal to apply local cosine regression on | 
| lmin | integer. minimum signal length (L parameter) to search | 
| pwidth | integer. the range of window positions to search for each window size | 
| kwidth | integer. the width of frequencies to search | 
| verbose | logical. whether or not to print intermediate results | 
Value
S3 object of class 'swdft_local_cosreg'
Local Periodic Signal
Description
Local Periodic Signal
Usage
local_signal(N, A = 1, Fr = 1, phase = 0, S = 0, L = N)
Arguments
| N | signal length | 
| A | Amplitude | 
| Fr | Frequency: Number of cycles in a length N period | 
| phase | phase | 
| S | start of local signal | 
| L | length of local signal | 
Value
length N local periodic signal
Matching Demodulation
Description
Matching Demodulation
Usage
matching_demod(x, n, thresh = 0.05, max_cycles = 5,
  smooth = "butterworth", order = 5, passfreq = 0.1, debug = FALSE)
Arguments
| x | numeric. Signal to demodulate | 
| n | integer. Window size for SWDFT | 
| thresh | numeric. Threshold to determine whether to continue demodulating | 
| max_cycles | maximum number of demodulation cycles | 
| smooth | character. Type of smoothing to use, accepts either 'ma', 'double_ma', or 'butterworth' (the default) | 
| order | moving average parameter if 'smooth' argument equals 'ma' or 'double_ma'. Defaults to 5 | 
| passfreq | numeric scalar. Pass frequency used in butterworth low-pass filter. defaults to .1 | 
| debug | Logical. Whether to print out intermediate output. | 
Value
An S3 'swdft_matching_demod' object. See ?new_swdft_matching_demod for details.
Simple high pass filter
Description
Simple high pass filter
Usage
moving_average(x, order)
Arguments
| x | the vector or time-series | 
| order | the order of the filter | 
Constructor function for class 'swdft'
Description
Constructor function for class 'swdft'
Usage
new_swdft(a, x, n, type, pad, taper_type, taper, p, smooth, m, num_convs)
Arguments
| a | 2D complex array of SWDFT coefficients. If there is smoothing, then this represents the smoothed squared modulus coefficients. | 
| x | numeric input signal | 
| n | window size | 
| type | 'fftw' or 'fft' | 
| pad | whether or not it was padded | 
| taper_type | type of taper | 
| taper | numeric values of the taper | 
| p | of cosine taper (if used) | 
| smooth | type of smoother | 
| m | width of kernel for smoothing (optional) | 
| num_convs | number of kernel convolutions (optional) | 
Value
list w/ the same elements as the arguments, an S3 object of class 'swdft'
Constructor function for class 'swdft2d'
Description
Constructor function for class 'swdft2d'
Usage
new_swdft2d(a, x, n0, n1, type)
Arguments
| a | 4D complex-valued array of 2D SWDFT coefficients | 
| x | 2D real or complex valued signal | 
| n0 | window size in row direction | 
| n1 | window size in column direction | 
| type | algorithm to implement. defaults to "fftw", other option 'fft' for R's base FFT function. R's base fft function is used if | 
Value
S3 object w/ the same elements as arguments to this constructor function
Constructor function for class 'swdft3d'
Description
Constructor function for class 'swdft3d'
Usage
new_swdft3d(a, x, n0, n1, n2, type)
Arguments
| a | 4D complex-valued array of 2D SWDFT coefficients | 
| x | 3D real or complex-valued array | 
| n0 | window size in dimension 0 | 
| n1 | window size in dimension 1 | 
| n2 | window size in dimension 2 | 
| type | defaults to 'base', which is the only option | 
Value
S3 object w/ the same elements as arguments to this constructor function
Constructor function for class swdft_mod
Description
Constructor function for class swdft_mod
Usage
new_swdft_cosreg(coefficients, fitted, residuals, data)
Arguments
| coefficients | matrix of coefficients for cosine regression model | 
| fitted | fitted values of cosine regression model | 
| residuals | residuals of cosine regression model | 
| data | original signal used to fit cosine regression | 
Value
list with the following elements
- coefficients. A matrix of parameters, the three columns are: 1. amplitude 2. phase, and 3. frequency. There is only more that one row used when multiple frequencies are fit sequentially. 
- fitted. fitted values of cosine regression model 
- residuals. residuals of cosine regression model 
- data. original signal used to fit cosine regression 
Constructor function for class 'swdft_demod'
Description
Constructor function for class 'swdft_demod'
Usage
new_swdft_demod(x, f0, A_t, Phi_t, fitted, y, y_smooth, smooth, order,
  passfreq)
Arguments
| x | numeric vector | 
| f0 | numeric scalar. Frequency to demodulate | 
| A_t | extracted amplitude from y_smooth | 
| Phi_t | extracted phase from y_smooth | 
| fitted | fitted values | 
| y | non-smoothed demodulated signal | 
| y_smooth | smoothed demodulated signal | 
| smooth | character. Type of smoothing to use, accepts either 'ma', 'double_ma', or 'butterworth' (the default) | 
| order | moving average parameter if 'smooth' argument equals 'ma' or 'double_ma'. Defaults to 5 | 
| passfreq | numeric frequency used as the passfreq in the low-pass filter | 
Value
list with the following elements
- coefficients. A matrix of parameters, the three columns are: 1. amplitude 2. phase, and 3. frequency. There is only more that one row used when multiple frequencies are fit sequentially. 
- fitted. fitted values of cosine regression model 
- residuals. residuals of cosine regression model 
- data. original signal used to fit cosine regression 
- list with the filter used ('smooth') and parameters ('order' for 'ma' or 'double_ma', 'passfreq' for butterworth) 
- list w/ the demodulated signal, and smoothed demodulated signal 
Constructor function for class 'swdft_local_cosreg'
Description
Constructor function for class 'swdft_local_cosreg'
Usage
new_swdft_local_cosreg(coefficients, fitted, residuals, data,
  window_params)
Arguments
| coefficients | matrix of coefficients for cosine regression model | 
| fitted | fitted values of cosine regression model | 
| residuals | residuals of cosine regression model | 
| data | original signal used to fit cosine regression | 
| window_params | data frame of fitted coefficients for each window size | 
Value
list with the following elements
- coefficients. A matrix of parameters, the three columns are: 1. amplitude 2. phase, and 3. frequency. There is only more that one row used when multiple frequencies are fit sequentially. 
- fitted. fitted values of cosine regression model 
- residuals. residuals of cosine regression model 
- data. original signal used to fit cosine regression 
- window_params. data frame of fitted coefficients for each window size 
Constructor function for class 'swdft_matching_demod'
Description
Constructor function for class 'swdft_matching_demod'
Usage
new_swdft_matching_demod(x, n, fitted, thresh, max_cycles, smooth, order,
  passfreqs, maxvals, freqs, khats, amps, phases, demods, cycle, resids,
  fits, return_rows)
Arguments
| x | numeric. Signal to demodulate | 
| n | integer. Window size for SWDFT | 
| fitted | fitted values | 
| thresh | numeric. Threshold to determine whether to continue demodulating | 
| max_cycles | maximum number of demodulation cycles | 
| smooth | character. Type of smoothing to use, accepts either 'ma', 'double_ma', or 'butterworth' (the default) | 
| order | moving average parameter if 'smooth' argument equals 'ma' or 'double_ma'. Defaults to 5 | 
| passfreqs | pass frequency used in each iteration | 
| maxvals | Maximum SWDFT coefficient for each iteration | 
| freqs | Frequencies used in each iteration | 
| khats | Integer version of frequency. | 
| amps | Instantaneous amplitude for each iteration | 
| phases | Instantaneous phase for each iteration | 
| demods | List of demodulated signal and smoothed demodulated signal for each iteration | 
| cycle | Number of cycles used | 
| resids | Residuals for each iteration | 
| fits | Fitted values for each iteration | 
| return_rows | Logical vector indicating which iterations occurred. Used for subsetting. | 
Value
list with the following elements
- coefficients. coefficients from the R local signals with time-varying amplitude and phase model. 
- fitted. fitted values of cosine regression model 
- residuals. residuals of cosine regression model 
- data. original signal used to fit cosine regression 
- smooth. list with the filter used ('smooth') and parameters ('order' for 'ma' or 'double_ma', 'passfreq' for butterworth) 
- demod. list w/ the demodulated signal, and smoothed demodulated signal 
- thresh. Threshold used. 
- iterations. List of fits, residuals, and maximum values for each iteration 
Plot method for 'swdft' object
Description
Plot method for 'swdft' object
Usage
## S3 method for class 'swdft'
plot(x, freq_type = "cycles", fs = NULL,
  hertz_range = NULL, take_log = FALSE, log_thresh = 1e-05,
  use_fields = TRUE, scale_shrink = 0.9, zlim = NULL,
  xlab = "Window Position", ylab = "Frequency (Cycles/Window)",
  title = "SWDFT", cex_main = 1, cex_lab = 1, cex_axis = 1,
  xaxis_subset = NULL, custom_xaxis = NULL, custom_yaxis = NULL,
  col = "grayscale", display = TRUE, ...)
Arguments
| x | Object of class 'swdft'. If x$a is complex-valued, it is converted to the squared modulus. If x$a is real-valued, then we assume that it represents the squared | 
| freq_type | Specify how to display the frequency axis. Either 'cycles' (default), 'fraction', or 'hertz' | 
| fs | sample rate. Used if freq_type='hertz' | 
| hertz_range | integer vector, given by (low, high). Specifies the range of hertz to display and is only used when freq_type='hertz' | 
| take_log | logical. Whether to take the log before plotting | 
| log_thresh | numeric. Threshold for smallest possible value. Defaults to .000001, and is used to keep plots from displaying of ~ -40. | 
| use_fields | logical. Determines whether we use image.plot from the fields package, or 'image' from the graphics package. The advantage of image.plot is that we get a color scale, so the default is TRUE | 
| scale_shrink | Proportion between 0 and 1 to shrink the scale | 
| zlim | Custom z range | 
| xlab | Custom x-label | 
| ylab | Custom y-label | 
| title | Custom title | 
| cex_main | how large to make the title | 
| cex_lab | how large to make the labels | 
| cex_axis | how large to make the axis labels | 
| xaxis_subset | subset of x-axis (time / window position) for plotting | 
| custom_xaxis | Defaults to NULL. Otherwise, used to change the x-axis | 
| custom_yaxis | Defaults to NULL. Otherwise, used to change the y-axis | 
| col | defaults to grayscale, can also be 'tim.colors' from fields package | 
| display | logical. Defaults to TRUE, only used for testing purposes, so it should always be TRUE. | 
| ... | optional arguments to match the plot generic function | 
Plot method for swdft_mod object
Description
Plot method for swdft_mod object
Usage
## S3 method for class 'swdft_mod'
plot(x, y = NULL, ...)
Arguments
| x | A swdft_cosreg object | 
| y | not used, but required by plot generic function | 
| ... | optional arguments to match the plot generic function | 
The principal nth root of unity
Description
The principal nth root of unity
Usage
prou(n)
Arguments
| n | integer root | 
Value
complex number
Residuals method for swdft_cosreg objects
Description
Residuals method for swdft_cosreg objects
Usage
## S3 method for class 'swdft_mod'
residuals(object, ...)
Arguments
| object | A swdft_cosreg object | 
| ... | optional arguments to match generic function | 
Sine signal with adjustable parameters
Description
Sine signal with adjustable parameters
Usage
sine(N, A = 1, Fr = 1, phase = 0)
Arguments
| N | length signal | 
| A | Amplitude | 
| Fr | Frequency: Number of cycles in a length N period | 
| phase | phase | 
Value
numeric vector with sine
Smooth SWDFT coefficients with a convolution
Description
Smooth SWDFT coefficients with a convolution
Usage
smooth_pgram(a, fft_weight = NULL)
Arguments
| a | real-valued length n periodogram | 
| fft_weight | optionally specify the pre-computed FFT of the weights | 
Value
smoothed coefficients
Smooth the SWDFT coefficients
Description
Smooth the SWDFT coefficients
Usage
smooth_swdft(a, ktype = "daniell", m = 2, num_convs = 1)
Arguments
| a | real or complex-valued swdft. If real-valued, then we assume it's the squared modules already. If it's complex valued, we convert to the squared modulus. | 
| ktype | either 'daniell' or 'modified.daniell' | 
| m | kernel width from stats::kernel | 
| num_convs | num_convs from stats::kernel | 
Value
Smooth squared modulues SWDFT coefficients
Sliding Window Discrete Fourier Transform
Description
Sliding Window Discrete Fourier Transform
Usage
swdft(x, n, type = "fftw", pad = TRUE, taper_type = "none",
  p = 0.1, smooth = "none", m = 2, num_convs = 1)
Arguments
| x | real or complex vector | 
| n | integer window size. | 
| type | algorithm to implement. defaults to "fftw", other option 'fft' for R's base FFT function. R's base fft function is used if | 
| pad | optionally zero-pad the array to that the output array has the same dimension as the original time-series | 
| taper_type | type of taper for each window position. defaults to 'none', can also be 'cosine'. | 
| p | Proportion to be tapered at each end of the series. Argument copied from the spec.taper function in the default stats package. Defaults to .1. | 
| smooth | Type of smoother. Defaults to 'none', can also be 'daniell' or 'modified daniell'. If smooth is 'none', then the SWDFT returns the smoothed squared modulus coefficients, not the complex numbers | 
| m | width of kernel. Defaults to 2 | 
| num_convs | Number of times to convolve the kernel. Defaults to 1 | 
Value
An S3 'swdft' object. See ?new_swdft for details.
Examples
x <- rnorm(n = 20)
a <- swdft(x, n = 2^3)
2D Sliding Window Discrete Fourier Transform
Description
2D Sliding Window Discrete Fourier Transform
Usage
swdft2d(x, n0, n1, type = "fftw")
Arguments
| x | 2D input signal | 
| n0 | window size in row direction | 
| n1 | window size in column direction | 
| type | algorithm to implement. defaults to "fftw", other option 'fft' for R's base FFT function. R's base fft function is used if 'fftwtools' library is not installed. | 
Value
An S3 'swdft2d' object. See ?new_swdft for details.
2D Sliding Window Discrete Fourier Transform using base R
Description
2D Sliding Window Discrete Fourier Transform using base R
Usage
swdft2d_fft(x, n0, n1)
Arguments
| x | 2D input signal | 
| n0 | window size in row direction | 
| n1 | window size in column direction | 
2D Sliding Window Discrete Fourier Transform using fftw
Description
2D Sliding Window Discrete Fourier Transform using fftw
Usage
swdft2d_fftw(x, n0, n1)
Arguments
| x | 2D input signal | 
| n0 | window size in row direction | 
| n1 | window size in column direction | 
3D Sliding Window Discrete Fourier Transform
Description
3D Sliding Window Discrete Fourier Transform
Usage
swdft3d(x, n0, n1, n2, type = "base")
Arguments
| x | 3D real or complex-valued array | 
| n0 | window size in dimension 0 | 
| n1 | window size in dimension 1 | 
| n2 | window size in dimension 2 | 
| type | defaults to 'base', which is the only option | 
Value
An S3 'swdft3d' object. See ?new_swdft for details.
3D SWDFT using base R
Description
3D SWDFT using base R
Usage
swdft_base_3d(x, n0, n1, n2)
Arguments
| x | 3D real or complex-valued array | 
| n0 | window size in dimension 0 | 
| n1 | window size in dimension 1 | 
| n2 | window size in dimension 2 | 
Sliding Window Discrete Fourier Transform with base R
Description
Sliding Window Discrete Fourier Transform with base R
Usage
swdft_fft(x, n, taper)
Arguments
| x | real or complex vector | 
| n | integer window size. | 
| taper | length n vector to multiply against the input data for each window position | 
Value
n x P array, where P = length(x) - n + 1
Sliding Window Discrete Fourier Transform using fftw
Description
Sliding Window Discrete Fourier Transform using fftw
Usage
swdft_fftw(x, n, taper)
Arguments
| x | real or complex vector | 
| n | integer window size. | 
| taper | length n vector to multiply against the input data for each window position | 
Value
n x P array, where P = length(x) - n + 1
Convert the SWDFT to proportions of frequency
Description
Convert the SWDFT to proportions of frequency
Usage
swdft_to_props(a)
Arguments
| a | swdft | 
Phase unwrapping
Description
Phase unwrapping
Usage
unwrap_phase(p)
Arguments
| p | vector of phases fit by demodulation |