Main Content

mdltest

Dimension of signal subspace

Description

nsig = mdltest(X) estimates the number of signals, nsig, present in a snapshot of data, X, that impinges upon the sensors in an array. The estimator uses the Minimum Description Length (MDL) test. The input argument, X, is a complex-valued matrix containing a time sequence of data samples for each sensor. Each row corresponds to a single time sample for all sensors.

example

nsig = mdltest(X,'fb') estimates the number of signals. Before estimating, it performs forward-backward averaging on the sample covariance matrix constructed from the data snapshot, X. This syntax can use any of the input arguments in the previous syntax.

example

Examples

collapse all

Construct a data snapshot of two plane waves arriving at a half-wavelength-spaced uniform line array having 10 elements. The plane waves arrive from 0° and –25° azimuth, both with elevation angles of 0°. Assume the signals arrive in the presence of additive noise that is both temporally and spatially Gaussian white. For each signal, the SNR is 5 dB. Take 300 samples to build a 300-by-10 data snapshot. Then, solve for the number of signals using mdltest.

N = 10;
d = 0.5;
elementPos = (0:N-1)*d;
angles = [0 -25];
x = sensorsig(elementPos,300,angles,db2pow(-5));
Nsig = mdltest(x)
Nsig = 
2

The result shows that the number of signals is two, as expected.

Construct a data snapshot for two plane waves arriving at a half-wavelength-spaced uniform line array with 10 elements. Correlated plane waves arrive from 0° and 10° azimuth, both with elevation angles of 0°. Assume the signals arrive in the presence of additive noise that is both temporally and spatially Gaussian white noise. For each signal, the SNR is 10 dB. Take 300 samples to build a 300-by-10 data snapshot. Then, solve for the number of signals using mdltest.

N = 10;
d = 0.5;
elementPos = (0:N-1)*d;
angles = [0 10];
ncov = db2pow(-10);
scov = [1 .5]'*[1 .5];
x = sensorsig(elementPos,300,angles,ncov,scov);
Nsig = mdltest(x)
Nsig = 
1

This result shows that mdltest cannot determine the number of signals correctly when the signals are correlated.

Now, try the forward-backward smoothing option.

Nsig = mdltest(x,'fb')
Nsig = 
2

The addition of forward-backward smoothing yields the correct number of signals.

Input Arguments

collapse all

Data snapshot, specified as a complex-valued, K-by-N matrix. A snapshot is a sequence of time-samples taken simultaneous at each sensor. In this matrix, K represents the number of time samples of the data, while N represents the number of sensor elements.

Example: [ –0.1211 + 1.2549i, 0.1415 + 1.6114i, 0.8932 + 0.9765i; ]

Data Types: double
Complex Number Support: Yes

Output Arguments

collapse all

Dimension of signal subspace, returned as a non-negative integer. The dimension of the signal subspace is the number of signals in the data.

More About

collapse all

References

[1] Van Trees, H.L. Optimum Array Processing. New York: Wiley-Interscience, 2002.

Extended Capabilities

expand all

Version History

Introduced in R2013a