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 ar_psd
plot(
x,
yscale = c("linear", "log", "dB"),
xlab = NULL,
ylab = NULL,
main = NULL,
...
)
numeric vector of autoregressive model coefficients. The first element is the zero-lag coefficient, which always has a value of 1.
square of the moving average coefficient, specified as a positive scalar Default: 1
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.
sampling frequency (Hz). Default: 1
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 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.
object to plot.
character string specifying scaling of Y-axis; one of
"linear"
, "log"
, "dB"
labels passed to plotting function. Default: NULL
additional arguments passed to functions
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.
This function calculates the power spectrum of the autoregressive model
M x(n) = sqrt(v).e(n) + SUM a(k).x(n-k) k=1where
x(n)
is the output of the model and e(n)
is white noise.# NOT RUN {
a <- c(1, -2.7607, 3.8106, -2.6535, 0.9238)
psd <- ar_psd(a)
# }
Run the code above in your browser using DataLab