Direction of Arrival with Beamscan and MVDR
This example shows how to use beamscan and minimum variance distortionless response (MVDR) techniques for direction of arrival (DOA) estimation in Simulink®. It is based on the MATLAB® example docid:phased_examples.example-ex62922668.
Available Example Implementations
This example includes two Simulink® models:
Beamscan and MVDR Direction of Arrival Estimation on a ULA
This example simulates the reception of two narrowband incident signals on a 10-element uniformly linear antenna array (ULA). Both signal sources are located at 0 degrees elevation. One signal source moves from 30 degrees azimuth to 50 degrees and back. The other signal source, with 3 dB less power, moves in the opposite direction. After simulating the reception of the signals and adding noise, the beamscan and MVDR spectra are calculated. Because a ULA is symmetric around its axis, a DOA algorithm cannot uniquely determine azimuth and elevation. Therefore, the results returned by these DOA estimators are in the form of broadside angles. In this example because the elevation of the sources is at 0 degrees and the scanning region is between -90 to 90 degrees, the broadside and azimuth angles are the same.
The model consists of signal simulation followed by DOA processing. The blocks used in the model are:
- Random Source - The blocks labeled Signal1 and Signal2 generate Gaussian vectors to simulate the transmitted power of the narrowband plane waves. The signals are buffered at 300 samples per frame.
- Concatenate - Concatenates the outputs of the Random Source blocks into a 2 column matrix.
- Signal directions - Signal From Workspace block reads from the workspace, the arrival directions in degrees of each signals. The block outputs a vector of 2 angles, once per frame.
- Narrowband Rx Array - Simulates the signals received at the ULA. The first input to this block is a matrix with 2 columns. Each column corresponds to one of the received plane waves. The second input (Ang) is a 2-element vector that specifies the incident direction at the antenna array of the corresponding plane waves. The antenna array's configuration is contained in a MATLAB® workspace variable created by a helper script. This variable is used in the Sensor Array tab of the dialog. Using a variable makes it easier to share the antenna array's configuration across several blocks.
- Receiver Preamp - Adds thermal noise to the received signal.
- ULA MVDR Spectrum - Calculates the spatial spectrum of the incoming narrowband signals using the MVDR algorithm. This block also calculates the direction of arrivals of the incoming signals.
- ULA Beamscan Spectrum - Calculates the spatial spectrum of the incoming narrowband signals by scanning a region using a narrowband conventional beamformer. This block also calculates the direction of arrivals of the incoming signals.
Exploring the Example
Several dialog parameters of the model are calculated by the helper function helperslexBeamscanMVDRDOAParam. To open the function from the model, click on Modify Simulation Parameters block. This function is executed once when the model is loaded. It exports to the workspace a structure whose fields are referenced by the dialogs. To modify any parameters, either change the values in the structure at the command prompt or edit the helper function and rerun it to update the parameter structure.
Results and Displays
The beamscan spectrum is updated as the sources move towards each other. The spectrum shows two wide peaks with different magnitudes moving in opposite directions.
When the sources are approximately 10 degrees apart the peaks merge and the DOA of the signals are not clearly distinguished. The calculated DOA will start drifting from the actual values, as shown in the displays. When two signals arrive from directions separated by less than the beamwidth, their DOA's cannot be resolved accurately using the beamscan method.
The MVDR spectrum, on the other hand, has a higher resolution. The peaks in the spectrum are narrower and can be distinguished even when the sources are very close to each other. The MVDR algorithm is very sensitive to the sources' locations. It tries to filter out signals that are not located precisely at one of the scan angles specified on the ULA MVDR Spectrum block. The peaks are greatest when the sources are located at one of the specified scan angles. They will pulsate as the sources move from one of the specified scan angles to another.
Beamscan and MVDR Direction of Arrival Estimation on a URA
This example replaces the ULA configuration of the previous example with a 10 by 5 uniformly rectangular antenna array (URA). One signal source moves from 30 degrees azimuth, 10 degrees elevation to 50 degrees azimuth, -5 degrees elevation. The other signal source, with 3 dB less power, moves in the opposite direction. Rectangular arrays allow the DOA estimators to determine both the azimuth and elevation. Matrix viewers are used instead of vector scopes to visualize the 2 dimensional spatial spectrum. Everything else is similar to the previous example.
Exploring the Example
The helper function used for this example is helperslex2DBeamscanMVDRDOAParam. To open the function from the model, click on Modify Simulation Parameters block.
Results and Displays
The results are similar to the previous example. The beamscan spectrum is updated as the sources move towards each other. The spectrum shows two wide peaks with different magnitudes moving in opposite directions.
When the sources are approximately 10 degrees apart, the peaks merge and the DOA's of the signals are not clearly distinguished.
Here the MVDR spectrum can still distinguish both peaks.