Aquí está el código Python para generar este gráfico, utilizando NumPy y Matplotlib. Incluye mi implementación del algoritmo derivado de la modulación por densidad de pulsos:
#!/usr/bin/python2.5 desde pylab importar * desde numpy importar *def pdm ( x ): y = ceros_similares ( x ) qe = ceros_similares ( x ) qe [ - 1 ] = 0 # inicial [[:es:error de cuantificación]] es 0 para n en el rango ( x . tamaño ): y [ n ] = 2 * ( x [ n ] > qe [ n - 1 ] ) - 1 qe [ n ] = y [ n ] - x [ n ] + qe [ n - 1 ] devuelve y , qedef squarify ( x , y ): mitad = ( x [ 1 :] + x [: - 1 ] ) / 2 xo = hstack (( x [ 0 ], repeat ( mitad , 2 ), x [ - 1 ] )) yo = repeat ( y , 2 ) return xo , yo t = arange ( 100.0 ) x = sin ( 2 * pi / 100 * t ) y , qe = pdm ( x )para , yo = squarify ( t , y ) plot ( etiqueta = "onda sinusoidal PDM" , * squarify ( t , y ) ) plot ( t , x , etiqueta = "onda sinusoidal PCM" , ancho de línea = 5 ) eje (( - 5 , 105 , - 1,25 , 1,5 )) leyenda ( loc = 'superior derecha' ) xticks ( fontsize = 16 ) yticks ( fontsize = 16 ) xlabel ( "Tiempo discreto (n)" , tamaño de fuente = 18 ) ylabel ( "Amplitud de la señal" , tamaño de fuente = 18 )savefig ( "pdm.svg" , transparente = Verdadero )