English: Graph showing how envelope (in red) and phase (black dots, for zero crossings) of a signal can be simply derived with the Hilbert Transform.
The corresponding python code is:
importnumpyasnpimportscipy.signalimportmatplotlib.pyplotasmpimportmatplotlib.mlabasmm# Create a function for the instantaneous frequency ...dt=0.01t=np.arange(0,20,dt)f=(0.2+1.3*np.exp(-((t-10)/4)**2))# ... and envelopeenv=2-f/2# Plot the corresponding function valuesdf=2*np.pi*f*dtfsum=np.cumsum(df)x=np.sin(fsum)*env# Using the Hilbert transform, find the envelope and zero crossingsenvelope=abs(scipy.signal.hilbert(x))phase=np.angle(scipy.signal.hilbert(x))zeroCrossing=mm.find(np.diff(np.sign(np.cos(phase)))==2)# Plot the resultsmp.plot(x)mp.hold('on')mp.plot(envelope,'r')mp.plot((0,2000),(0,0),'k--')mp.plot(zeroCrossing,np.zeros(zeroCrossing.size),'ko')mp.ylim((-2,2.2))mp.savefig('hilbert.eps')mp.show()
di condividere – di copiare, distribuire e trasmettere quest'opera
di modificare – di adattare l'opera
Alle seguenti condizioni:
attribuzione – Devi fornire i crediti appropriati, un collegamento alla licenza e indicare se sono state apportate modifiche. Puoi farlo in qualsiasi modo ragionevole, ma non in alcun modo che suggerisca che il licenziante approvi te o il tuo uso.
condividi allo stesso modo – Se remixi, trasformi o sviluppi il materiale, devi distribuire i tuoi contributi in base alla stessa licenza o compatibile all'originale.
Questo file contiene informazioni aggiuntive, probabilmente aggiunte dalla fotocamera o dallo scanner usati per crearlo o digitalizzarlo. Se il file è stato modificato, alcuni dettagli potrebbero non corrispondere alla realtà.