C mise en œuvre de Matlab interp1 fonction (interpolation linéaire)
Savez-vous tout C mise en œuvre de l'Matlab interp1 fonction (juste "linéaire")? Je sais l'un pour Java.
OriginalL'auteur Luis Andrés García | 2012-02-22
Vous devez vous connecter pour publier un commentaire.
J'ai porté Luis du code c++. Il semble fonctionner, mais je n'ai pas vérifié, donc, être conscient et re-vérifier vos résultats.
C'est très bien comme je suis à la recherche d'une implémentation C++. Merci!
OriginalL'auteur Nikita Rokotyan
J'ai mis en œuvre cette interpolation linéaire moi-même (certains de il est écrit en espagnol, désolé). La fonction appelée encuentraValorMasProximo juste trouve la valeur la plus proche (elementoMasProximo) et index (indiceEnVector) à un autre (xx[i]), dans un tableau (xD).
La test fonction pourrait être:
Et ses résultat:
1 2.000000
2 4.000000
3 6.000000
4 8.000000
5 10.000000
6 12.000000
7 14.000000
8 16.000000
9 18.000000
10 20.000000
OriginalL'auteur Luis Andrés García
Excelent implémentations de fonctions fréquemment utilisées peuvent être trouvés dans le livre Numerical Recipes in C, qui est visible gratuitement en ligne. Chapitre 3.1.2 a une interpolation linéaire de la recette, le reste de ce chapitre couvre les plus avancés.
Je peux que recommander fortement ce livre, c'est très bien écrit et couvre une grande quantité d'algorithmes, qui sont également mis en œuvre dans une très efficace et toujours compréhensible.
OriginalL'auteur jupp0r
Il y avait des problèmes avec le C-Code soumis par Luis. D'abord le encuentraValorMasProximo manquait. Deuxièmement, le tableau de réservation est un numéro court. J'ai aussi nettoyé la fonction. Ci-dessous est le fonctionnel, C-Code avec le encuentraValorMasProximo fonction (renommé findNearestNeighbourIndex).
OriginalL'auteur user1097111
Vous pouvez regarder la GSL (bibliothèque scientifique numérique). Il y a beaucoup de Matlab-like fonctions, parmi eux, et à une dimension de l'interpolation.
Je suis sur mon téléphone maintenant, désolé, ne peut pas fournir de lien.
OriginalL'auteur Ivan Angelov
Êtes-vous conscient de la Matlab Coder? Il génère automatiquement du code c/c++ à partir de code Matlab. Si vous avez comme faisant partie de vos Matlab package, vous pouvez simplement exécuter le interp1 fonction à travers elle et voir ce que Matlab crache.
OriginalL'auteur prototoast
@user1097111, votre code existe un bug, en fonction findNearestNeighbourIndex, il devrait l'être, si ( newDist >= 0 && newDist < dist ), pas si ( newDist > 0 && newDist < dist ).
OriginalL'auteur Haiwei Liu
voir lininterp1f dans fileexchange.
OriginalL'auteur Felipe G. Nievinski
Si cela aide quelqu'un dans le futur, c'est une version sans temporaires tableaux et sans le 0 bug.
OriginalL'auteur canesin