Accelerating the pace of engineering and science

# Documentation Center

• Trial Software
• Product Updates

# pburg

Autoregressive power spectral density estimate — Burg's method

## Syntax

• pxx = pburg(x,order)
• pxx = pburg(x,order,nfft) example
• [pxx,w] = pburg(___)
• [pxx,f] = pburg(___,fs) example
• [pxx,w] = pburg(x,order,w)
• [pxx,f] = pburg(x,order,f,fs)
• [___] = pburg(x,order,___,freqrange)
• [pxx,f,pxxc] = pburg(___,'ConfidenceLevel',probability)
• pburg(___)

## Description

pxx = pburg(x,order) returns the power spectral density estimate, pxx of a discrete-time signal vector, x, using Burg's method. pxx is the distribution of power per unit frequency. The frequency is expressed in units of radians/sample. order is the order of the autoregressive (AR) model used to produce the PSD estimate. pburg uses a default DFT length of 256.

example

pxx = pburg(x,order,nfft) uses nfft points in the discrete Fourier transform (DFT). For real x, pxx has length (nfft/2+1) if nfft is even, and (nfft+1)/2 if nfft is odd. For complex–valued x, pxx always has length nfft. If empty, the default nfft is 256.

[pxx,w] = pburg(___) returns the vector of normalized angular frequencies, w, at which the PSD is estimated. w has units of radians/sample. For real–valued signals, w spans the interval [0,π] when nfft is even and [0,π) when nfft is odd. For complex–valued signals, w always spans the interval [0,2π).

example

[pxx,f] = pburg(___,fs) returns a frequency vector, f, in cycles per unit time. The sampling frequency, fs, is the number of samples per unit time. If the unit of time is seconds, then f is in cycles/sec (Hz). For real–valued signals, f spans the interval [0,fs/2] when nfft is even and [0,fs/2) when nfft is odd. For complex-valued signals, f spans the interval [0,fs).

[pxx,w] = pburg(x,order,w) returns the two-sided AR PSD estimates at the normalized frequencies specified in the vector, w. The vector, w, must contain at least 2 elements.

[pxx,f] = pburg(x,order,f,fs) returns the two-sided AR PSD estimates at the frequencies specified in the vector, f. The vector, f, must contain at least 2 elements. The frequencies in f are in cycles per unit time. The sampling frequency, fs, is the number of samples per unit time. If the unit of time is seconds, then f is in cycles/sec (Hz).

[___] = pburg(x,order,___,freqrange) returns the AR PSD estimate over the frequency range specified by freqrange. Valid options for freqrange are: 'onesided', 'twosided', or 'centered'.

[pxx,f,pxxc] = pburg(___,'ConfidenceLevel',probability) returns the probabilityx100% confidence intervals for the PSD estimate in pxxc.

pburg(___) with no output arguments plots the AR PSD estimate in dB per unit frequency in the current figure window.

## Examples

expand all

### AR PSD Estimate of AR(4) Process

Create a realization of an AR(4) wide-sense stationary random process. Estimate the PSD using Burg's method. Compare the PSD estimate based on a single realization to the true PSD of the random process.

Create an AR(4) system function. Obtain the frequency response and plot the PSD of the system.

```A = [1 -2.7607 3.8106 -2.6535 0.9238];
[H,F] = freqz(1,A,[],1);
plot(F,20*log10(abs(H)),'b','linewidth',2);
xlabel('Hz'); ylabel('dB/Hz');```

Create a realization of the AR(4) random process. Set the random number generator to the default settings for reproducible results. The realization is 1000 samples in length. Assume a sampling frequency of 1. Use pburg to estimate the PSD for an 4-th order process. Compare the PSD estimate with the true PSD.

```rng default;
x = randn(1000,1);
y = filter(1,A,x);
[Pxx,F] = pburg(y,4,1024,1);
hold on;
plot(F,10*log10(Pxx),'r'); hold on;
legend('True Power Spectral Density','PSD Estimate')```

### Reflection Coefficients For Model Order Determination

Create a realization of an AR(4) process. Use arburg to determine the reflection coefficients. Use the reflection coefficients to determine an appropriate AR model order for the process. Obtain an estimate of the process PSD.

Create a realization of an AR(4) process 1000 samples in length. Use arburg with the order set to 12 to return the reflection coefficients. Plot the reflection coefficients to determine an appropriate model order.

```A = [1 -2.7607 3.8106 -2.6535 0.9238];
rng default;
x = filter(1,A,randn(1000,1));
[a,e,k] = arburg(x,12);
order = 1:12;
stem(order,k,'markerfacecolor',[0 0 1]);
xlabel('Model Order')
title('Reflection Coefficients')```

The reflection coefficients decay to zero after order 4. This indicates an AR(4) model is most appropriate.

Obtain a PSD estimate of the random process using Burg's method. Use 1000 points in the DFT. Plot the PSD estimate.

```[pxx,w] = pburg(x,4,length(x));
plot(w,10*log10(pxx)); axis tight;
xlabel('Radians/sample');```

## Input Arguments

expand all

### x — Input signalvector

Input signal, specified as a row or column vector.

Data Types: single | double
Complex Number Support: Yes

### order — Order of autoregressive modelpositive integer

Order of the autoregressive model, specifed as a positive integer.

Data Types: double

### nfft — Number of DFT points256 (default) | integer | []

Number of DFT points, specified as a positive integer. For a real-valued input signal, x, the PSD estimate, pxx has length (nfft/2+1) if nfft is even, and (nfft+1)/2 if nfft is odd. For a complex-valued input signal,x, the PSD estimate always has length nfft. If nfft is specified as empty, the default nfft is used.

Data Types: single | double

### fs — Sampling frequencypositive scalar

Sampling frequency specified as a positive scalar. The sampling frequency is the number of samples per unit time. If the unit of time is seconds, the sampling frequency has units of hertz.

### w — Normalized frequencies for Goertzel algorithmvector

Normalized frequencies for Goertzel algorithm, specified as a row or column vector with at least 2 elements. Normalized frequencies are in radians/sample.

Example: w = [pi/4 pi/2]

Data Types: double

### f — Cyclical frequencies for Goertzel algorithmvector

Cyclical frequencies for Goertzel algorithm, specified as a row or column vector with at least 2 elements. The frequencies are in cycles per unit time. The unit time is specified by the sampling frequency, fs. If fs has units of samples/second, then f has units of Hz.

Example: fs = 1000; f= [100 200]

Data Types: double

### freqrange — Frequency range for PSD estimate'onesided' | 'twosided' | 'centered'

Frequency range for the PSD estimate, specified as a one of 'onesided', 'twosided', or 'centered'. The default is 'onesided' for real-valued signals and 'twosided' for complex-valued signals. The frequency ranges corresponding to each option are

• 'onesided' — returns the one-sided PSD estimate of a real-valued input signal, x. If nfft is even, pxx will have length nfft/2+1 and is computed over the interval [0,π] radians/sample. If nfft is odd, the length of pxx is (nfft+1)/2 and the interval is [0,π) radians/sample. When fs is optionally specified, the corresponding intervals are [0,fs/2] cycles/unit time and [0,fs/2) cycles/unit time for even and odd length nfft respectively.

• 'twosided' — returns the two-sided PSD estimate for either the real-valued or complex-valued input, x. In this case, pxx has length nfft and is computed over the interval [0,2π) radians/sample. When fs is optionally specified, the interval is [0,fs) cycles/unit time.

• 'centered' — returns the centered two-sided PSD estimate for either the real-valued or complex-valued input, x. In this case, pxx has length nfft and is computed over the interval (-π,π] radians/sample for even length nfft and (-π,π) radians/sample for odd length nfft. When fs is optionally specified, the corresponding intervals are (-fs/2, fs/2] cycles/unit time and (-fs/2, fs/2) cycles/unit time for even and odd length nfft respectively.

Data Types: char

### probability — Confidence interval for PSD estimate0.95 (default) | scalar in the range (0,1)

Coverage probability for the true PSD, specified as a scalar in the range (0,1). The output, pxxc, contains the lower and upper bounds of the probabilityx100% interval estimate for the true PSD.

## Output Arguments

expand all

### pxx — PSD estimatevector

PSD estimate, specified as a real-valued, nonnegative column vector. The units of the PSD estimate are in squared magnitude units of the time series data per unit frequency. For example, if the input data is in volts, the PSD estimate is in units of squared volts per unit frequency. For a time series in volts, if you assume a resistance of 1 ohm and specify the sampling frequency in Hz, the PSD estimate is in watts/Hz.

Data Types: single | double

### w — Normalized frequenciesvector

Normalized frequencies, specified as a real-valued column vector. If pxx is a one-sided PSD estimate, w spans the interval [0,π] if nfft is even and [0,π) if nfft is odd. If pxx is a two-sided PSD estimate, w spans the interval [0,2π). For a DC-centered PSD estimate, f spans the interval (-π,π] radians/sample for even length nfft and (-π,π) radians/sample for odd length nfft.

Data Types: double

### f — Cyclical frequenciesvector

Cyclical frequencies, specified as a real-valued column vector. For a one-sided PSD estimate, f spans the interval [0,fs/2] when nfft is even and [0,fs/2) when nfft is odd. For a two-sided PSD estimate, f spans the interval [0,fs). For a DC-centered PSD estimate, f spans the interval (-fs/2, fs/2] cycles/unit time for even length nfft and (-fs/2, fs/2) cycles/unit time for odd length nfft .

Data Types: double

### pxxc — Confidence boundsmatrix

Confidence bounds, specified as an N-by-2 matrix with real-valued elements. The row dimension of the matrix is equal to the length of the PSD estimate, pxx. The first column contains the lower confidence bound and the second column contains the upper confidence bound for the corresponding PSD estimates in the rows of pxx. The coverage probability of the confidence intervals is determined by the value of the probability input.

Data Types: single | double

## See Also

Was this topic helpful?