The group delay of a filter or model. The group delay is the time delay for a sinusoid at a given frequency.
# S3 method for default
grpdelay(filt, a = 1, n = 512, whole = FALSE, Fs = NULL, ...)# S3 method for Arma
grpdelay(filt, ...)
# S3 method for Ma
grpdelay(filt, ...)
# S3 method for Zpg
grpdelay(filt, ...)
# S3 method for grpdelay
plot(x, xlab = if(x$HzFlag) 'Hz' else 'radian/sample',
ylab = 'Group delay (samples)', type = "l", ...)
# S3 method for grpdelay
print(x, ...)
A list of class grpdelay
with items:
the group delay, in units of samples. It can be converted
to seconds by multiplying by the sampling period (or dividing by
the sampling rate Fs
).
frequencies at which the group delay was calculated.
number of points at which the group delay was calculated.
TRUE
for frequencies in Hz, FALSE
for frequencies in radians.
for the default case, the moving-average coefficients of
an ARMA model or filter. Generically, filt
specifies an arbitrary model or filter operation.
the autoregressive (recursive) coefficients of an ARMA filter.
number of points at which to evaluate the frequency response.
FALSE
(the default) to evaluate
around the upper half of the
unit circle or TRUE
to evaluate around the entire unit circle.
sampling frequency in Hz. If not specified, the frequencies are in radians.
object to be plotted.
as in plot
, but with more
sensible defaults.
for methods of grpdelay
, arguments are passed to
the default method. For plot.grpdelay
, additional arguments
are passed through to plot
.
Original Octave version by Julius O. Smith III and Paul Kienzle. Conversion to R by Tom Short.
For fastest computation, n
should factor into a small number of
small primes.
If the denominator of the computation becomes too small, the group delay is set to zero. (The group delay approaches infinity when there are poles or zeros very close to the unit circle in the z plane.)
When results of grpdelay
are printed, the group delay will be
plotted. As with lattice
plots, automatic printing does not work
inside loops and function calls, so explicit calls to print
or
plot
are needed there.
https://ccrma.stanford.edu/~jos/filters/Numerical_Computation_Group_Delay.html
https://en.wikipedia.org/wiki/Group_delay
Octave Forge https://octave.sourceforge.io/
filter
, Arma
, freqz
# Two Zeros and Two Poles
b <- poly(c(1/0.9*exp(1i*pi*0.2), 0.9*exp(1i*pi*0.6)))
a <- poly(c(0.9*exp(-1i*pi*0.6), 1/0.9*exp(-1i*pi*0.2)))
gpd <- grpdelay(b, a, 512, whole = TRUE, Fs = 1)
print(gpd)
plot(gpd)
Run the code above in your browser using DataLab