Main Content


Estimate AoA or AoD of Bluetooth LE Signal



    angle = bleAngleEstimate(IQsamples,cfgAngle) estimates the angle of arrival (AoA) or angle of departure (AoD), angle, for the given in-phase and quadrature (IQ) samples, IQsamples, and Bluetooth® low energy (LE) angle estimation configuration object, cfgAngle.


    collapse all

    Create a Bluetooth LE angle estimation configuration object, specifying the values of antenna array size, slot duration, and antenna switching pattern.

    cfgAngle = bleAngleEstimateConfig('ArraySize',2,'SlotDuration',2, ...
        'SwitchingPattern',[1 2])
    cfgAngle = 
      bleAngleEstimateConfig with properties:
               ArraySize: 2
          ElementSpacing: 0.5000
            SlotDuration: 2
        SwitchingPattern: [1 2]

    Set the IQ samples such that they define a connection data channel protocol data unit (PDU) with an AoA constant tone extension (CTE) of 2 μs slots, CTE time of 16 μs, and azimuth rotation of 70 degrees.

    IQsamples = [0.8507+0.5257i;-0.5257 + 0.8507i;-0.8507 - 0.5257i; ...
        0.5257 - 0.8507i;0.8507+0.5257i;-0.5257 + 0.8507i; ...
        -0.8507 - 0.5257i;0.5257 - 0.8507i;-0.3561 + 0.9345i];

    Estimate the AoA of the Bluetooth LE signal.

    angle = bleAngleEstimate(IQsamples,cfgAngle)
    angle = 70

    Input Arguments

    collapse all

    IQ samples, specified as a complex-valued column vector. This input corresponds to the 8 μs value of the reference period and slot duration.

    Data Types: single | double

    Bluetooth LE angle estimation configuration object, specified as a bleAngleEstimateConfig object.

    Output Arguments

    collapse all

    AoA or AoD, returned as one of these values.

    • Real number – This value is the estimated broadside angle. If elevation is 0, the estimated broadside angle represents the azimuth angle.

    • Two-element row vector of real numbers in the form [azimuth elevation] – azimuth and elevation are the estimated azimuth angle and elevation angle in degrees, respectively.

    The size of this output argument is equal to the size of the ArraySize property of the bleAngleEstimateConfig object.

    Data Types: double


    [1] Bluetooth Technology Website. “Bluetooth Technology Website | The Official Website of Bluetooth Technology.” Accessed November 22, 2021.

    [2] Bluetooth Special Interest Group (SIG). "Bluetooth Core Specification." Version 5.1.

    [3] Wooley, Martin. Bluetooth Direction Finding: A Technical Overview. Bluetooth Special Interest Group (SIG), Accessed December 6, 2021,

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2020b