MATLAB: Does the PWELCH function return an incorrect frequency response of a DTMF signal

dtmffrequencypwelchresponseshiftsignalSignal Processing Toolbox

When the frequency response of a Dual Tone Multi-Frequency (DTMF) signals is plotted using the PWELCH function, the peak of the response doesn't correspond to exact frequency for which the signal is generated. For a DTMF signal, 2 peaks corresponding to 2 frequencies are obtained in the frequency response. However, the peaks are shifted from the original frequency. Why is there a shift in frequency?

Best Answer

PWELCH uses the Welch's method to calculate the power spectral density of a signal. The PSD is calculated at equally spaced frequencies in the range of [0, 2*pi) for normalized angular frequency, or [0, Fs) for linear frequency. The frequency range is also called frequency bin. The length of the frequency bin is determined by the amount of data points (length) in the signal. The higher the number of data points, the smaller the frequency bin and more accurate the Frequency response.
The shift you are seeing in your frequency response plot is due to the resolution of this bin. Increasing the length of the signal will give you a higher resolution and a more accurate response.
Related Question