ar_psd function

Power spectrum of AR model

Power spectrum of AR model

Compute the power spectral density of an autoregressive model.

ar_psd( a, v = 1, freq = 256, fs = 1, range = ifelse(is.numeric(a), "half", "whole"), method = ifelse(length(freq) == 1 && bitwAnd(freq, freq - 1) == 0, "fft", "poly") ) ## S3 method for class 'ar_psd' plot( x, yscale = c("linear", "log", "dB"), xlab = NULL, ylab = NULL, main = NULL, ... ) ## S3 method for class 'ar_psd' print( x, yscale = c("linear", "log", "dB"), xlab = NULL, ylab = NULL, main = NULL, ... )

Arguments

  • a: numeric vector of autoregressive model coefficients. The first element is the zero-lag coefficient, which always has a value of 1.

  • v: square of the moving average coefficient, specified as a positive scalar Default: 1

  • freq: vector of frequencies at which power spectral density is calculated, or a scalar indicating the number of uniformly distributed frequency values at which spectral density is calculated. Default: 256.

  • fs: sampling frequency (Hz). Default: 1

  • range: character string. one of:

    • "half" or "onesided": frequency range of the spectrum is from zero up to but not including fs / 2. Power from negative frequencies is added to the positive side of the spectrum.
    • "whole" or "twosided": frequency range of the spectrum is -fs / 2 to fs / 2, with negative frequencies stored in "wrap around order" after the positive frequencies; e.g. frequencies for a 10-point "twosided" spectrum are 0 0.1 0.2 0.3 0.4 0.5 -0.4 -0.3 -0.2. -0.1.
    • "shift" or "centerdc": same as "whole" but with the first half of the spectrum swapped with second half to put the zero-frequency value in the middle. If freq is a vector, "shift" is ignored.

    Default: If model coefficients a are real, the default range is "half", otherwise the default range is "whole".

  • method: method used to calculate the power spectral density, either "fft" (use the Fast Fourier Transform) or "poly" (calculate the power spectrum as a polynomial). This argument is ignored if the freq argument is a vector. The default is "poly" unless the freq argument is an integer power of 2.

  • x: object to plot.

  • yscale: character string specifying scaling of Y-axis; one of "linear", "log", "dB"

  • xlab, ylab, main: labels passed to plotting function. Default: NULL

  • ...: additional arguments passed to functions

Returns

An object of class "ar_psd" , which is a list containing two elements, freq and psd containing the frequency values and the estimates of power-spectral density, respectively.

Details

This function calculates the power spectrum of the autoregressive model

where x(n) is the output of the model and e(n) is white noise.

Examples

a <- c(1, -2.7607, 3.8106, -2.6535, 0.9238) psd <- ar_psd(a)

Author(s)

Peter V. Lanspeary, pvl@mecheng.adelaide.edu.au .

Conversion to R by Geert van Boxtel, gjmvanboxtel@gmail.com

  • Maintainer: Geert van Boxtel
  • License: GPL-3
  • Last published: 2024-09-11