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()
partilhar – copiar, distribuir e transmitir a obra
recombinar – criar obras derivadas
De acordo com as seguintes condições:
atribuição – Tem de fazer a devida atribuição da autoria, fornecer uma hiperligação para a licença e indicar se foram feitas alterações. Pode fazê-lo de qualquer forma razoável, mas não de forma a sugerir que o licenciador o apoia ou subscreve o seu uso da obra.
partilha nos termos da mesma licença – Se remisturar, transformar ou ampliar o conteúdo, tem de distribuir as suas contribuições com a mesma licença ou uma licença compatível com a original.