주요 콘텐츠

bistaticposest

Estimate position of targets using bistatic range/range sum and angle-of-arrival measurements

Since R2025a

    Description

    Estimate target positions from bistatic range or range-sum measurements with known anchor positions.

    tgtposest = bistaticposest(rngest,angest,rngvar,angvar,txpos,rxpos) estimates the position of targets, tgtposest, from bistatic range estimates or range-sum estimates, rngest, and angle-of-arrival estimates, angest. The function requires known transmit anchor positions, txpos, and known receive anchor positions, rxpos. rngvar is the range-measurement variance, and angvar is the angle measurement variance. This function supports multiple transmit and receive anchors with one target or supports one transmit anchor and one receive anchor with multiple targets.

    example

    tgtposest = bistaticposest(___,RangeMeasurement=measurement) specifies the type of range measurement as "BistaticRange" or "RangeSum". The bistatic range is the range sum subtracted by the baseline range. When "BistaticRange" is chosen, the target position estimation uses bistatic range and AOA measurements. When "RangeSum" is chosen, the target position estimation uses range-sum and angle-of-arrival measurements. The default is "BistaticRange".

    example

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

    Examples

    collapse all

    A bistatic radar measures range-sum and AOA of a target in a 3-dimensional Cartesian space. Then, the radar applies WLLS algorithm using the range sum estimate, AOA estimate, and transmit and receive anchor positions.

    rng("default")

    Create transmit anchor positions (meters).

    txpos = [-2000; -8; -30];

    Create receive anchor positions (meters).

    rxpos = [0;0;0];

    Create the target position (meters).

    tgtpos = [1400; 4; 1];

    Set the range and AOA variances.

    rngvar = 1;
    aoavar = 0.1*ones(2,1);

    Create the range-sum measurements.

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

    Create the AOA measurements (degrees).

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

    Estimate the position from range-sum-angle measurements.

    tgtposest = bistaticposest(rngest,aoaest, ...
        rngvar,aoavar,txpos,rxpos, ...
        RangeMeasurement='RangeSum')
    tgtposest = 3×1
    103 ×
    
        1.4001
        0.0182
        0.0152
    
    

    RMSE of target position estimate

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

    Use a multistatic radar to measures bistatic range and AOA of a target in a 3-dimensional Cartesian space. Apply apply a WLLS algorithm to solve for the target position.

    rng("default")

    Set the transmitter anchor position (meters).

    txpos = [-10; -8; -30];

    Set two receiver anchor positions (meters).

    rxpos = [2 10; -1 -4; 3 4];

    Set the target position (meters).

    tgtpos = [8; 4; 1];

    Define the range and AOA variances.

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

    Create bistatic range measurements.

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

    Create the AOA measurements.

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

    Estimate the target position and RMSE error.

    tgtposest = bistaticposest(rngest,aoaest, ...
        rngvar,aoavar,txpos,rxpos, ...
        RangeMeasurement='BistaticRange');

    RMSE of target position estimate.

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

    Input Arguments

    collapse all

    Bistatic range or range-sum measurements, specified as a real-valued 1-by-K vector or real-valued J-by-L matrix.

    • When rngest is a real-valued length-K vector, the measurement represents bistatic range or range-sum measurements measured at one transmit anchor and one receive anchor for K targets.

    • When rngest is a real-valued J-by-L matrix, the measurement represents bistatic range or range-sum measurements measured at J transmit anchors and L receive anchors.

    Units are in meters.

    Example: [1000 2000]

    Data Types: single | double

    Angle of arrival estimates at receive anchors, specified as a real-valued P-by-L matrix or real-valued P-by-K matrix. P is the dimension of the AOA measurements. When P is 1,the row represents the azimuth angle measured at any receive anchors. When P is 2, the first row represents azimuth angle and the second row represents elevation angle measured at any receive anchor. L is the number of receive anchors and K is the number of targets.

    • When angest is a real-valued P-by-L matrix, the estimates represent AOA measurements at L receive anchors for one target.

    • When angest is a real-valued P-by-K matrix. The estimates represent AOA measurements at one receive anchor for one transmit anchor and for one target.

    Angular units are in degrees.

    Example: [10 20]

    Data Types: single | double

    Range variance, specified as an empty matrix [] or positive real-valued J-by-L matrix or positive real-valued length-K row vector. When rngvar is empty, the range variance estimates are unknown and are set to unity for all targets.

    • When rngvar is a J-by-L matrix, it represents the variance of the bistatic range or range-sum estimates of a target measured at J-L anchor pairs. When rngvar is empty, the variance estimates are unknown and are set to unity for all anchor pairs. Units are in meters-squared.

    • When rngvar is a length-K vector, it represents the variance of the bistatic range or range sum estimation of K targets measured at one anchor pair.

    Units are in meters-squared.

    Example: [10 15]

    Data Types: single | double

    Angle measurement variances, specified as empty [], a positive real-valued length-L row vector, or a positive real-valued 2-by-L matrix.

    • When angvar is a vector, it represents the azimuth angle variance estimates of a target measured at L receive anchors. When angvar is a matrix, it represents the azimuth and elevation angle variance estimates of a target measured at L receive anchors. When angvar is empty [], the variance estimates are unknown and are set to unity fot all L receive anchors. When the measurements are accurate, we can set the corresponding variance to be empty.

    • When angvar is a positive real-valued P-by-K matrix, it represents the angle variance estimates of K targets measured at a receive anchor. When angvar is empty [], the variance estimates are unknown and are set to unity for K targets. When the measurements are accurate, we can set the corresponding variance to be empty.

    Units are in degrees-squared.

    Example: [.10 .15]

    Data Types: single | double

    Transmitting anchor positions, specified as a real-valued Q-by-J matrix. J is the number of transmitting anchors. Each column represents the position of a different anchor. Positions may be two or three dimensional. For two dimensional positions, Q=2 and for three dimensional positions, Q=3. The jth column of txpos denotes the position of the jth transmitter in Q-dimensional Cartesian space. Units are in meters.

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

    Data Types: single | double

    Receiving anchor positions, specified as a real-valued Q-by-L matrix. L is the number of receiving anchors. Each column represents the position of a different anchor. Positions may be two or three dimensional. For two dimensional positions, Q=2 and for three dimensional positions, Q=3. The lth column of rxpos denotes the position of the lth receiver 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 Q-by-1 vector or real-valued Q-by-K matrix, representing the estimated K target positions. Units are in meters.

    Data Types: single | double

    When the input contains JL anchor pairs 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, the 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.

    Data Types: single | double

    More About

    collapse all

    Doppler and Speed Definitions

    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