2017-06-15 2 views
0

Je voulais implémenter un noyau trapézoïdal en python (probablement en utilisant numpy ou scipy) pour la convolution, tout comme celui qui vient dans le module astropy en tant que noyau trapézoïdal1D. J'ai essayé de convolution avec une forme d'onde trapézoïdale mais les résultats n'étaient pas satisfaisants.Noyau trapézoïdal en python

def trapzoid_signal(t, width=2., slope=1., amp=1., offs=0): 
    global trasig 
    trasig=[] 
    trasig = slope*width*signal.sawtooth(2*np.pi*t/width, width=0.5)/4. 
    trasig+= slope*width/4. 
    trasig[trasig>amp] = amp 
    return trasig + offs 
t = np.linspace(0, 32, 34) 
trapzoid_signal(t, width=32, slope=1, amp=0.0322) 
print(trasig) 
z = scipy.signal.convolve(trasig,new) 

Si j'imprime z donne:

[ nan nan nan ..., nan nan nan] 

J'ai essayé complot z ne donne rien. De l'aide?

+1

Veuillez essayer d'utiliser un [mcve]. Quel code as-tu essayé? Avez-vous des entrées/sorties de test? –

+0

fait. Vérifiez s'il vous plaît –

Répondre

1

Eureka !!! Je l'ai fait. La raison pour laquelle il n'était pas en train de tracer ou d'imprimer des valeurs comme [ nan nan nan ..., nan nan nan] a été supprimée en utilisant le code suivant que j'ai trouvé sur StackOverflow lui-même.

ind = np.where(~np.isnan(new))[0] 
first, last = ind[0], ind[-1] 
new[:first] = new[first] 
new[last + 1:] = new[last] 

Ensuite, il a résolu mon problème. J'ai non seulement obtenu les valeurs de z, mais aussi obtenu mon intrigue. Merci à stackoverflow.com.