Main Content

rangeangposest

Estimates the positions of multiple targets from multiple anchors at known positions combined with one-way range and angle of arrival measurements at the anchors

Since R2025a

    Description

    Estimates the position of targets using multiple anchors at known positions based on one-way range and angle of arrival (AOA) measurements at the anchors. Estimator utilizes the nonlinear weighted least-square (WLSS) algorithm Algorithms.

    tgtposest = rangeangposest(rngest,angest,rngvar,angvar,anchorpos) estimates the position of targets, tgtposest, from one-way range estimates rngest and angle-of-arrival estimates, angest. The function requires known anchor positions anchorpos. rngvar is the range-measurement variance and angvar is the angle measurement variance.

    example

    [tgtposest,tgtposcov] = rangeangposest(___) also returns the target position covariance matrix tgtposcov.

    example

    Examples

    collapse all

    A monostatic radar measures the range and AOA of a target in a 2-dimensional Cartesian space. Then, the radar applies the WLLS algorithm using the measured range, measured AOA, and anchor position.

    rng("default")

    Create the radar anchor at coordinate (20,-10).

    anchorpos = [20;-10];

    Create a target at coordinate (8000,400).

    tgtpos = [8000;400];

    Choose a range variance of 10 meters and an angle variance of 0.01 degrees.

    rngvar = 10;
    aoavar = 0.01;

    Create a noisy range measurement.

    rngest = norm(anchorpos-tgtpos) + sqrt(rngvar)*randn;

    Create a noisy angle measurement.

    dir = tgtpos - anchorpos;
    az = cart2sph(dir(1),dir(2),0);
    aoaest = rad2deg(az) + sqrt(aoavar)*randn;

    Estimate the target position.

    tgtposest = rangeangposest(rngest,aoaest,rngvar,aoavar,anchorpos)
    tgtposest = 2×1
    103 ×
    
        8.0003
        0.4256
    
    

    Compute the RMSE error of the target position.

    rmsepos = rmse(tgtposest,tgtpos);
    disp(['RMS positioning error = ',num2str(rmsepos),' meters.'])
    RMS positioning error = 18.1265 meters.
    

    Estimate the ranges and AOAs of two targets in 3-dimensional Cartesian space using monostatic radar data. Apply the WLLS algorithm using to estimate the targets positions.

    rng("default")

    Create the radar anchor at coordinate (200,-10,0)

    radaranchorpos = [200;-10;0];

    Create the two targets.

    tgtpos = [80 2000; 4000 10; 10 -6];

    Choose range variances of 10 meters and angle variances of 0.01 degrees.

    rngvar = 10*ones(1,2);
    aoavar = 0.01*ones(2,2);

    Create noisy range measurements.

    rngest = vecnorm(radaranchorpos-tgtpos)+sqrt(rngvar).*randn(1,2);

    Create noisy AOA measurements.

    dir = tgtpos - radaranchorpos;
    [az,el] = cart2sph(dir(1,:),dir(2,:),dir(3,:));
    aoaest = rad2deg([az;el]) + sqrt(aoavar).*randn(2,2);

    Estimate target positions and covariances.

    [tgtposest,tgtposcov] = rangeangposest(rngest,aoaest,rngvar,aoavar,radaranchorpos)
    tgtposest = 3×2
    103 ×
    
        0.0958    2.0058
        4.0021    0.0111
        0.0160   -0.0101
    
    
    tgtposcov = 
    tgtposcov(:,:,1) =
    
       49.0414    1.0143    0.0041
        1.0143   10.0270   -0.1561
        0.0041   -0.1561   49.0679
    
    
    tgtposcov(:,:,2) =
    
       10.0000    0.0008   -0.0004
        0.0008    9.9343   -0.0000
       -0.0004   -0.0000    9.9346
    
    

    Compute the RMSE errors of the target positions.

    rmsepos = rmse(tgtposest,tgtpos);
    disp(['RMS positioning error = ', num2str(rmsepos), ' meters.'])
    RMS positioning error = 9.8253      4.1462 meters.
    

    Input Arguments

    collapse all

    Range measurements, specified as a real-valued length-L row vector or real-valued length-K row vector.

    • When rngest is a real-valued length-L row vector, the measurements represents range measurements to one target measured at L anchors.

    • When rngest is a real-valued length-K row vector, the measurements represent range from K targets to one anchor.

    Units are in meters.

    Example: [1000 2000]

    Data Types: single | double

    • When angest is a real-valued P-by-L matrix, the measurement applies to L anchors and one target. P represents the dimension of the AOA measurement. When P is 1, the row represents the azimuth angle (between -180° to 180°) measured at L anchors. When P is 2, the first row represents the azimuth angle and the second row represents the elevation angle (between -90° to 90° ) measured at L receive anchors.

    • When angest is a real-valued P-by-K matrix, the measurement applies to K targets and one anchor. P represents the dimension of the AOA measurement. When P is 1, the row represents the azimuth angle (between -180° to 180°) measured at L anchors. When P is 2, the first row represents the azimuth angle and the second row represents the elevation angle (between -90° to 90° ) measured at K targets.

    Units are in degrees.

    Example: [10 20]

    Data Types: single | double

    Range estimate variance, specified as an empty matrix [], positive real-valued length-L row vector, or positive real-valued length-K row vector. When rngvar is empty, the variance estimates are unknown and are set to be unity for either all L anchor or all K targets. Units are in meters-squared.

    Example: [10 15]

    Data Types: single | double

    • Angle estimate variances for L anchors and one target, specified as empty [], a real-valued length-L row vector, or positive real-valued 2-by-L matrix. When angvar is a vector, it represents the azimuth angle variance estimates of one target measured at L receive anchors. When angvar is a matrix, it represents the angle variance estimates of a target measured at L receive anchors. When angvar is empty, the variance estimates are unknown and are set unity all L receive anchors. When the measurements are accurate, you can set the corresponding variance to be empty.

    • Angle estimate variances for K targets and one anchor, specified as empty [], a real-valued length-K row vector, or positive real-valued 2-by-K matrix. When angvar is a vector, it represents the azimuth angle variance estimates of a target measured at K targets. When angvar is a matrix, it represents the angle variance estimates of a target measured at K targets. When angvar is empty, the variance estimates are unknown and are set unity all K targets. When the measurements are accurate, you can can set the corresponding variance to be empty.

    Units are in degrees-squared.

    Example: [.10 .15]

    Data Types: single | double

    Receive anchor positions, specified as a real-valued Q-by-L matrix where L is the number of receive anchors. When there are multiple targets, L=1. Q represents the dimensionality of the Cartesian space. Positions may be two or three dimensional. For two dimensional positions, Q=2 and for three dimensional positions, Q=3. Each column of anchorpos represents the position of a different anchor in Q-dimensional space. The lth column of anchorpos denotes the position of the lth anchor in Q-dimensional Cartesian space. Units are in meters.

    Example: [20 31 –16; 13 64 –44]

    Data Types: single | double

    Output Arguments

    collapse all

    Target position estimate, returned as a real-valued length-Q column vector or real-valued Q-by-K matrix where K is the number of targets. Q is the dimension of space. Units are in meters.

    Data Types: single | double

    Estimated target position covariance, returned as a real-valued Q-by-Q matrix or Q-by-Q-by-K array where Q is the dimensions of space.

    When the input contains L anchors with one target, the tgtposcov is a Q-by-Q matrix, which is a real positive semi-definite symmetric matrix representing the estimated target position covariance.

    When the input contains 1 anchor pair with K targets and one anchor, tgtposcov is a Q-by-Q-by-K array, where each page is a real-valued positive semi-definite symmetric matrix, representing the estimated target position covariance. Units are in meters-squared.

    Units are in meters-squared.

    Data Types: single | double

    More About

    collapse all

    References

    [1] Reza Zekavat and R. Michael Buehrer, Handbook of Position Location: Theory, Practice, and Advances, 2019

    [2] A. Noroozi, M. A. Sebt, S. M. Hosseini, R. Amiri and M. M. Nayebi, "Closed-Form Solution for Elliptic Localization in Distributed MIMO Radar Systems With Minimum Number of Sensors," in IEEE Transactions on Aerospace and Electronic Systems, vol. 56, no. 4, pp. 3123-3133, Aug. 2020.

    [3] M. Malanowski and K. Kulpa, "Two Methods for Target Localization in Multistatic Passive Radar," in IEEE Transactions on Aerospace and Electronic Systems, vol. 48, no. 1, pp. 572-580, Jan. 2012.

    [4] P. Stoica and J. Li, "Lecture Notes - Source Localization from Range-Difference Measurements" in IEEE Signal Processing Magazine, vol. 23, no. 6, pp. 63-66, Nov. 2006.

    Version History

    Introduced in R2025a