Quelqu'un pourrait-il suggérer quelle bibliothèque prend en charge la création d'un filtre gaussien de la longueur requise et de Sigma? J'ai essentiellement besoin d'une fonction équivalente pour la fonction MATLAB ci-dessous:
fltr = fspecial('gaussian',[1 n],sd)
4 Réponses :
Peut-être scipy.ndimage.filters.gaussian_filter code>? Je ne l'ai jamais utilisé, mais la documentation est à: https://docs.scipy.org/doc/scipy-0.15.1/Reference/generated/scipy.ndimage.filters.gaussian_filter.html P>
Vous n'avez pas besoin d'une bibliothèque pour un simple gaussien 1D Gaussien.
>>> g = gauss() 1.48671951473e-06 0.000133830225765 0.00443184841194 0.0539909665132 0.241970724519 0.398942280401 0.241970724519 0.0539909665132 0.00443184841194 0.000133830225765 1.48671951473e-06 >>> sum(g) 0.99999999318053079
Je m'attendais à ce qu'il retourne quelque chose comme la courbe gaussienne après PLT.hist (g) mais c'est une demi-devinge
Grande réponse simple! Il est toujours préférable d'éviter d'utiliser des bibliothèques, lorsque cela est possible, vous comprenez donc ce qui se passe dans votre code :). Pour le cas d'un N code>, la seule chose à modification est
r = np.linspace (-int (n / 2) + 0.5, int (n / 2) -0.5, n ) code>.
Essayez scipy.ndimage.gaussian_filter code>, mais voulez-vous vraiment le noyau ou voulez-vous aussi l'appliquer? (Dans ce cas, vous pouvez simplement utiliser cette fonction.) Dans l'ancien cas, appliquez le filtre sur un tableau de 0 Everywhere, mais avec un 1 au centre. Pour le boîtier 1D plus facile à écrire, ceci serait par exemple:
>>> ndimage.gaussian_filter1d(np.float_([0,0,0,0,1,0,0,0,0]), 1)
array([ 1.33830625e-04, 4.43186162e-03, 5.39911274e-02,
2.41971446e-01, 3.98943469e-01, 2.41971446e-01,
5.39911274e-02, 4.43186162e-03, 1.33830625e-04])
Si la vitesse d'exécution est d'importance, je recommande fortement de créer une fois le filtre une fois, puis de l'utiliser sur chaque itération. Les optimisations sont constamment fabriquées, mais il y a quelques années, cela a considérablement augmenté de code que j'ai écrit. (Les réponses ci-dessus montrent comment créer le filtre). P>