Las señales (independientemente de si representan fuentes de información analógicas o digitales) necesitan digitalizarse antes de ser procesadas por un sistema digital (una computadora, por ejemplo). El proceso al que deben ser sometidas se conoce como digitalización y consiste básicamente en registrar el valor aproximado de la señal cada cierto intervalo de tiempo.
El número de muestras capturadas durante la digitalización está directamente relacionado con la máxima componente de frecuencia de la señal. Dicha relación es expuesta por el Teorema del Muestreo Uniforme de esta forma:
Si capturamos 2n muestras/segundo de una señal entonces la máxima componente de frecuencia registrada de dicha señal tiene n Hercios.
La digitalización implica normalmente una pérdida irreversible de parte de la información que transporta la señal, por dos motivos:
Evidéntemente, las señales digitales digitalizadas sólo adolecen del primer problema.
Una forma sencilla de crear versiones digitales de señales digitales consiste en replicar tantas veces como sea preciso cada uno de los distintos valores que toma la señal digital. Esto es lo que realiza el programa http://www.ace.ual.es/\~{}vruiz/docencia/redes/practicas/progs/sampler.c (véase el Apéndice H.8). Nótese que si la señal no fuera digital este proceso no sería tan simple.
En la entrada de sampler.c, cada número real (representado físicamente como un número en punto flotante de 32 bits de precisión) indica un estado de la señal digital. La salida es simplemente una replicación de cada uno de estos estados.
Para generar el fichero de entrada para sampler.c podemos usar el programa http://www.ace.ual.es/\~{}vruiz/docencia/redes/practicas/progs/ascii2float.c (véase el Apéndice H.2).
Finalmente, para averiguar el contenido de un fichero .float podemos utilizar el programa http://www.ace.ual.es/\~{}vruiz/docencia/redes/practicas/progs/float2ascii.c (véase el Apéndice H.5).______________________________________________
Taller 2.1:
Taller 2.2: Ejecute:
y escriba una serie de números reales separados por la tecla <Enter>. Cuando no desee introducir más números escriba EOF y pulse finalmente <Enter>. Nota: con el redirector de flujo de entrada << provocamos que todo lo que tecleemos se convierta en la entrada estándar del programa sobre el que estamos realizando la redirección, hasta que no escribimos el código de fin de entrada (en este caso la cadena EOF). Nota 2: el redirector de flujo | provoca que la salida estándar del programa que queda a la izquierda se la entrada estándar del programa que queda a la derecha.