How do I Convert my FFT output array from dB to dBm

Updated Sep 28, 2022

Reported In

Hardware

  • PXIe-5162

Software

  • LabVIEW Signal Processing Toolkit

Issue Details

I am using an FFT function from a NI driver API and the elements in the output array are in units of dB (decibels). How do I convert these values to dBm instead of dB.

Solution

In any measurement application, a decibel is a unitless ratio. Decibels are always a reference to some other value. This value could be a constant, like 1mW, or something that could change, like a peak value. dBm is a decibel measurement that is referenced to 1mW. 

The output of a mathematical FFT will always be in the same units as the input. So if the input array to a software FFT is a series of voltage measurements, the output FFT array will be in units of Volts. For some FFT software functions, there is an additional step that converts the FFT output to dB and passes that back to the caller. The reference used to convert the FFT output to dB varies by function. If your goal is to have your final output units in dBm, you will need to convert the immediate FFT output to power units. Then perform the conversion to dB in code.

For example, in the NI-SCOPE driver API, the FFT Amp Spectrum (dB) function outputs an array of decibel values that are referenced to the peak value of the immediate FFT output array. If you wanted the FFT output in units of dBm, you would want to use the FFT Amp Spectrum (Volts RMS) function instead. This function outputs an array of voltage values (assuming the input is an array of voltage values) that represent the voltage in each frequency bin of the FFT across the spectrum. To convert to dBm, you would need to change the FFT output to units of power (P = V²/R) and then further convert the array to decibels per 1mW.

Additional Information

Please see the related links section for more information on decibels.