5
$\begingroup$

I apologize if some of what I ask is not entirely correct, I'm new to this field, but extremely interested.

I have an Audio signal of sample rate 44.1 kHz that I want to segment into 30 frames, and get the DFT of each frame to find the magnitude of certain frequencies for that frame. However, this means that I have a frequency resolution of 30 Hz in each bin, which isn't narrow enough.

Is it possible to interpolate the data to attain more data samples? As far as I'm aware, doubling the number of points would give a 88.2 kHz sampling rate, but still give a frequency resolution of 30. Would it be possible to treat the interpolated data as still having a sample rate of 44.1 kHz?

$\endgroup$
  • $\begingroup$ This question seems to be a dup of multiple others. $\endgroup$ – hotpaw2 Apr 3 '17 at 2:39
7
$\begingroup$

I do not understand why you have 30Hz resolution so I will focus only to the principle of the question "does interpolation increase resolution?".

Short answer is no, no new data, no new information.

A longer answer needs the spectrum visualization below, with time domain, continuous frequency domain and discrete frequency domain from left to right.

upsampling

The interpolation technique here is to preserve the information of spectrum. DFT works on discrete frequency domain which is the part from $-f_s$ to $f_s$ of the continuous frequency version.

First, look at the continuous frequency domain, if you upsample your signal correctly, it is equivalent to changing the sampling frequency. You wish to double the number of data, but it is just removing one-half the spectrum replicas of sampling process.

Now, look at the discrete frequency one. This version is normalized from $-f_s$ to $f_s$ of the continuous frequency counterpart. $f_s$ is doubled, the spectrum is then shrinked by a factor 1/2. If we call $0 < \alpha < 1$ the proportion of non-zero frequencies before upsampling, this proportion is $\alpha/2$ after upsampling. Before upsampling, DFT gives you $N$ bins for $\alpha$ then $N\alpha$ bins for the spectrum; after upsampling it is $2N$ for $\alpha/2$ then always $2N \times \alpha/2 = N\alpha$ bins for the same spectrum. No, your resolution does not change at all.

To have smoother resolution, the only way is to add more data. In your example, instead of dividing to 30 frames, divide your audio file to 15 frames.

$\endgroup$
  • 1
    $\begingroup$ Thanks very much for this, I understand a lot better now! I ended up looking into Short Time Fourier Transforms with overlapping windows, a a frame rate of 25 frames per second, ending up with a frequency resolution of 10 Hz. For higher frame rates, since I couldn't interpolate the source data, I found that interpolating the output data to suffice quite well! $\endgroup$ – echolocation Apr 4 '17 at 17:14
0
$\begingroup$

"Interpolation" consists basically of two steps. The first is convolution with an interpolation function in the time domain corresponding with a simple multiplication in the frequency domain. The second is resampling with a higher density in the time domain. If your total transform window retains the same time span in the time domain, the frequency spacing of your bins in the frequency domain doesn't change, you just get more of them. If your interpolation function does a good job at being a low-pass filter, the additional bins will be mostly zero. If your interpolation function does a bad job at being a low-pass filter, the additional bins will be mostly nonsense.

So basically if you want to increase your frequency resolution, the way to do this is to rather increase your transform window length. Which, of course, happens at the cost of your time resolution for tracking changing signal characteristics.

The overall tradeoff of time and frequency resolution when viewed as a quadratic measure is best for a Gaussian in both time and frequency space which means that for best resolution each frequency needs its own windowing function in the time domain.

Which leads to quadrature mirror filters and wavelet transforms as means to stay closer to the theoretical time/frequency resolution tradeoff (which is a hard mathematical limit related to the Heisenbergsche Unschärferelation) than a STFT can while losing some of its interpretability.

TLDR: for better frequency resolution you need longer time windows. Interpolation does not give you better resolution, it might just make for nicer bins by pushing the Nyquist frequency further away from relevantly non-zero bins. This does not add information but might make the existing information a bit nicer to interpret and manipulate at the upper range of the frequency content.

$\endgroup$
-1
$\begingroup$

Interpolation in the frequency domain does not increase peak separation resolution, but it can increase frequency estimation resolution if the signal to noise ratio is high enough.

You can interpolate the FFT results either by Sinc kernel interpolation (perhaps windowed), or by using a much longer zero-padded FFT, which both produce similar results.

$\endgroup$
-1
$\begingroup$

As others like AlexTP pointed out interpolation will not give you a better frequency resolution. If Fs is your sampling frequency and N is the number of samples in your signal, the size of your bins and hence the frequency resolution will be Fs/N. If you divide your signal / audio in 30 segments the frequency resolution will be 30 times less and my guess is this is your issue. Based on the uncertainty principle the higher the required resolution in time, the lower the resolution in frequency has to be. Based on what exactly you are trying to do you can look up STFT and wavelet transform as alternatives to FFT/DFT.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.