0
$\begingroup$

I have come across sampling rate conversion factor, which is given by:

                             S_factor = F_new/F_old

If F_new > F_old, then s_factor > 1

and

If F_new < F_old, then s_factor < 1

But, what is this "linear interpolation factor"?. Is it the same as sampling rate conversion factor?

Does the linear interpolation factors value should be in the range 0 to 1?, If so, why is that?

$\endgroup$
  • $\begingroup$ Can you provide a reference or definition of "linear interpolation factor" Where did come across this? $\endgroup$ – Hilmar Mar 3 '15 at 12:30
  • $\begingroup$ Source/Reference - Julius O.Smith* & Phil Gosett** "A Flexible Sampling Rate Conversion Method" IEEE, 1984. $\endgroup$ – PsychedGuy Mar 3 '15 at 12:34
  • $\begingroup$ Even this paper uses almost the same implementation - ccrma.stanford.edu/~jos/resample/resample.pdf $\endgroup$ – PsychedGuy Mar 3 '15 at 12:36
  • 1
    $\begingroup$ Also, note that the linear interpolation factor is eta, $\eta$, not n (but due to character limits I had to use n in my comment). Fig. 7 can be a bit confusing otherwise... $\endgroup$ – Oscar Mar 3 '15 at 12:55
  • 2
    $\begingroup$ OK. With sample rate conversion factor $S$, you want to compute samples at time $\frac{i}{S}$ for $i=0, 1, 2, \dots$. What I called time resolution is simply $1/S$, the time between the "new" samples, based on the time between the old samples, $1$. The linear interpolation factor is simply then the fractional part of $\frac{i}{S}$ for each $i$ with the integer part telling which sample index to use (together the next) for the linear interpolation. Can be written in a more formal way though, but not now. $\endgroup$ – Oscar Mar 3 '15 at 13:25
1
$\begingroup$

I'll move my comments to an answer:

With sample rate conversion factor $S$, you want to compute samples at "time" $\frac{i}{S}$ for $i=0,1,2,\dots$. "Time" relating to the index of the previous series. The linear interpolation factor is simply then the fractional part of $\frac{i}{S}$ for each $i$ with the integer part telling which sample index to use (together the next) for the linear interpolation.

Simple example to clarify: upsample a sequence a factor $\frac{10}{9}$. You would like to determine the samples at "time" $0, 0.9, 1.8, 2.7, 3.6, \dots$. First, start with sample $0$, then, compute the linear interpolation between sample $0$ and $1$ with $\eta = 0.9$. Next sample should be at "time" $1.8$, so $\eta = 0.8$ for samples $1$ and $2$. "Time" $2.7$ gives $\eta = 0.7$ for samples $2$ and $3$ and so on.

Note that you conceptually can compute the "time" $1.8$ sample from sample $0$ and $1$ with $\eta = 1.8$, but using sample $1$ and $2$ with $\eta = 0.8$ is better. So while $\eta$ does not really have to be $0$ and $1$ the results will be better and there is no advantage to not have it in that range.

$\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.