L'Interpolation Linéaire. Comment faire pour implémenter cet algorithme en C ? (Une version de Python est donné)

Il existe une très bonne méthode d'interpolation linéaire. Il effectue une interpolation linéaire nécessitant au plus un multiplier par échantillon de sortie. J'ai trouvé sa description dans un troisième édition de la Compréhension de DSP par Lyon. Cette méthode implique une spéciale tampon. Compte tenu d'un nombre d'échantillons à être inséré entre deux échantillons d'entrée, il produit des points de sortie de l'aide de l'interpolation linéaire. Ici, j'ai réécrit cet algorithme à l'aide de Python:

temp1, temp2 = 0, 0
iL = 1.0 / L
for i in x:
   hold = [i-temp1] * L
   temp1 = i
   for j in hold:
      temp2 += j
      y.append(temp2 *iL)

où x contient des échantillons d'entrée, L est un nombre de points pour être inséré, y contiendra des exemples de sortie.

Ma question est comment mettre en œuvre un tel algorithme en C ANSI dans une manière la plus efficace, par exemple, est-il possible d'éviter la deuxième boucle?

NOTE: remise de code Python est juste pour comprendre comment cet algorithme fonctionne.

Mise à JOUR: voici un exemple de comment cela fonctionne en Python:

x=[]
y=[]
hold=[]
num_points=20
points_inbetween = 2

temp1,temp2=0,0

for i in range(num_points):
   x.append( sin(i*2.0*pi * 0.1) )

L = points_inbetween
iL = 1.0/L
for i in x:
   hold = [i-temp1] * L
   temp1 = i
   for j in hold:
      temp2 += j
      y.append(temp2 * iL)

Disons x=[.... 10, 20, 30 ....]. Ensuite, si L=1, il va produire [... 10, 15, 20, 25, 30 ...]

Si vous voulez juste pour la mettre en œuvre en C pour la performance, mais encore l'utiliser à partir de Python, je recommande Cython.
présenté le code Python est juste pour comprendre comment cet algorithme fonctionne
Il est plus facile de comprendre comment un algorithme fonctionne si vous utilisez significative les noms de variables.
Ont mis à jour. Maintenant devrait être facile à comprendre
Est-il une référence en ligne de l'algorithme? Aussi, éviter les multiplications sonne comme une optimisation de la '80-s...

OriginalL'auteur psihodelia | 2010-12-16