Conferencia "Fundamentos del procesamiento de se帽ales digitales"

Hola a todos!

A menudo las personas recurren a m铆 con preguntas sobre tareas del campo del procesamiento de se帽ales digitales (DSP). Cuento en detalle los matices, sugiero las fuentes de informaci贸n necesarias. Pero todos los oyentes, como lo ha demostrado el tiempo, carecen de tareas pr谩cticas y ejemplos en el proceso de aprendizaje de esta 谩rea. En este sentido, decid铆 escribir un breve curso interactivo sobre procesamiento de se帽ales digitales y ponerlo en el dominio p煤blico .

La mayor parte del material de capacitaci贸n para la presentaci贸n visual e interactiva se implementa utilizando el Jupyter Notebook . Se supone que el lector tiene un conocimiento b谩sico del campo de las matem谩ticas superiores, as铆 como un peque帽o dominio del lenguaje de programaci贸n Python.



Lista de conferencias


Este curso contiene materiales en forma de conferencias terminadas sobre diversos temas del campo del procesamiento de se帽ales digitales. Los materiales se presentan utilizando bibliotecas de Python (paquetes numpy, scipy, matplotlib, etc.). La informaci贸n b谩sica para este curso fue tomada de mis conferencias, que yo, como estudiante graduado, les di a los estudiantes del Instituto de Energ铆a de Mosc煤 (NRU MEI). Parte de la informaci贸n de estas conferencias se us贸 en seminarios de capacitaci贸n en el Centro de Electr贸nica Contempor谩nea , donde actu茅 como profesor. Adem谩s, este material incluye la traducci贸n de varios art铆culos cient铆ficos, compilaci贸n de informaci贸n de fuentes confiables y literatura sobre procesamiento de se帽ales digitales, as铆 como documentaci贸n oficial sobre paquetes de aplicaciones y funciones integradas de las bibliotecas scipy y numpy de Python.

Para los usuarios de MATLAB (GNU Octave), dominar el material desde el punto de vista del c贸digo del programa no es dif铆cil, ya que las funciones principales y sus atributos son en gran medida id茅nticos y similares a los m茅todos de las bibliotecas de Python.

Todos los materiales est谩n agrupados por los principales temas del procesamiento de se帽ales digitales:

  1. Se帽ales: anal贸gicas, discretas, digitales. Conversi贸n Z
  2. Transformada de Fourier: se帽al de amplitud y fase, DFT y FFT,
  3. Convoluci贸n y correlaci贸n. Convoluci贸n lineal y c铆clica. Convoluci贸n r谩pida
  4. Procesos aleatorios. Ruido blanco Funci贸n de densidad de probabilidad
  5. Se帽ales deterministas. Modulaci贸n: AM, FM, FM, LFM. Manipulaci贸n
  6. Filtrado de se帽al: IIR, filtros FIR
  7. Funciones de ventana en tareas de filtrado. Detecci贸n de se帽ales d茅biles.
  8. Muestreo: diezmado e interpolaci贸n. Filtros CIC, filtros de media m贸vil


La lista de conferencias es suficiente pero, por supuesto, incompleta para un conocimiento introductorio del campo de DSP. Con tiempo libre, planeo apoyar y desarrollar este proyecto.

Donde encontrar


Todos los materiales son absolutamente gratuitos y est谩n disponibles como repositorio abierto en mi github como un proyecto de c贸digo abierto . Los materiales se presentan en dos formatos: en forma de cuadernos Jupyter para trabajo interactivo, estudio y edici贸n, y en forma de archivos HTML compilados a partir de estos cuadernos (despu茅s de descargarlos de Github tienen un formato bastante adecuado para leer e imprimir).

La siguiente es una descripci贸n muy breve de las secciones del curso con explicaciones breves, t茅rminos y definiciones. La informaci贸n b谩sica est谩 disponible en las conferencias iniciales, 隆aqu铆 hay solo una breve descripci贸n!

Se帽ales Conversi贸n Z


Secci贸n introductoria, que contiene informaci贸n b谩sica sobre los tipos de se帽ales. Se introduce el concepto de secuencia discreta, funci贸n delta y funci贸n Heaviside (salto de unidad).

Todas las se帽ales de acuerdo con el m茅todo de presentaci贸n en el conjunto se pueden dividir en cuatro grupos:
  • anal贸gico: se describen mediante funciones continuas en el tiempo,
  • discreto: se interrumpe a tiempo con un paso especificado por muestreo,
  • cuantizado: tener un conjunto de niveles finitos (generalmente en amplitud),
  • digital: una combinaci贸n de las propiedades de las se帽ales discretas y cuantificadas.


Se帽ales

Para la reconstrucci贸n correcta de una se帽al anal贸gica de una se帽al digital sin distorsi贸n y p茅rdida, se utiliza el teorema de muestreo conocido como el teorema de Kotelnikov (Nyquist-Shannon) .
Cualquier se帽al continua con un espectro limitado puede restaurarse de manera 煤nica y sin p茅rdida por sus muestras discretas tomadas con una frecuencia estrictamente mayor que el doble de la frecuencia superior del espectro de una se帽al continua.

Tal interpretaci贸n es v谩lida siempre que la funci贸n continua del tiempo ocupe una banda de frecuencia de 0 al valor de la frecuencia superior. Si los pasos de cuantizaci贸n y discretizaci贸n se eligen incorrectamente, la se帽al se distorsionar谩 de anal贸gica a discreta.

Tambi茅n en esta secci贸n, se describe la transformaci贸n Z y sus propiedades, y se muestra la representaci贸n de secuencias discretas en la forma Z.

Ejemplo de una secuencia discreta finita:
x(nT) = {2, 1, -2, 0, 2, 3, 1, 0} 
.
Un ejemplo de la misma secuencia en forma de Z:

X (z) = 2 + z -1 - 2z -2 + 2z -4 + 3z -5 + 1z -6

Transformada de Fourier. Propiedades DFT y FFT


Esta secci贸n describe el concepto del dominio de tiempo y frecuencia de una se帽al. Se introduce la definici贸n de la transformada discreta de Fourier (DFT). Se consideran los DFT directos e inversos y sus propiedades principales. Se muestra la transici贸n del DFT al algoritmo de transformaci贸n r谩pida de Fourier (FFT) en la base 2 (algoritmos de diezmado en frecuencia y tiempo). Reflej贸 la efectividad de FFT en comparaci贸n con DFT.

En particular, esta secci贸n describe el paquete de Python scipy.ffpack para calcular varias transformadas de Fourier (seno, coseno, directo, inverso, multidimensional, real).

隆La transformaci贸n de Fourier le permite representar cualquier funci贸n como un conjunto de se帽ales arm贸nicas! La transformaci贸n de Fourier es la base de los m茅todos de convoluci贸n y el dise帽o de correlacionadores digitales, se usa activamente en el an谩lisis espectral y se usa cuando se trabaja con n煤meros largos.

Caracter铆sticas de los espectros de se帽ales discretas:
1. La densidad espectral de una se帽al discreta es una funci贸n peri贸dica con un per铆odo igual a la frecuencia de muestreo.
2. Si la secuencia discreta es real , entonces el m贸dulo de densidad espectral de dicha secuencia es una funci贸n par , y el argumento es una funci贸n de frecuencia impar .

Espectro de se帽al arm贸nica:

FFT para coseno

Comparaci贸n de la eficacia de DFT y FFT


La eficiencia del algoritmo FFT y el n煤mero de operaciones realizadas linealmente depende de la longitud de secuencia N:

NDFTFFTLa relaci贸n del n煤mero de adiciones complejasLa raz贸n del n煤mero de multiplicaciones complejas.
El n煤mero de operaciones de multiplicaci贸n.N煤mero de operaciones de sumaEl n煤mero de operaciones de multiplicaci贸n.N煤mero de operaciones de suma
24 42124 41
4 416124 484 41,5
8645612245.32.3
16256240326483.75
3210249928016012,86.2
644096403219238421,310,5
128163841625644889636,618,1
.....................
409616777216167731202457649152683341
81926710886467100672532481064961260630

Como puede ver, cuanto mayor sea la duraci贸n de la conversi贸n, mayores ser谩n los ahorros en recursos inform谩ticos (en t茅rminos de velocidad de procesamiento o la cantidad de unidades de hardware).

Cualquier forma de onda arbitraria puede representarse como un conjunto de se帽ales arm贸nicas de diferentes frecuencias. En otras palabras, una se帽al de forma compleja en el dominio del tiempo tiene un conjunto de muestras complejas en el dominio de la frecuencia, que se denominan * arm贸nicos *. Estas muestras expresan la amplitud y la fase del efecto arm贸nico a una frecuencia espec铆fica. Cuanto mayor es el conjunto de arm贸nicos en el dominio de la frecuencia, m谩s exactamente aparece la forma de onda compleja.

FFT Gibbs

Convoluci贸n y correlaci贸n


Esta secci贸n presenta el concepto de correlaci贸n y convoluci贸n para secuencias discretas aleatorias y deterministas. Se muestra la relaci贸n entre las funciones de autocorrelaci贸n y correlaci贸n cruzada con convoluci贸n. Se describen las propiedades de convoluci贸n, en particular, se consideran los m茅todos de convoluci贸n lineal y c铆clica de una se帽al discreta con an谩lisis detallado sobre el ejemplo de una secuencia discreta. Adem谩s, se muestra un m茅todo para calcular la convoluci贸n "r谩pida" utilizando algoritmos FFT.

En problemas reales, a menudo se plantea la cuesti贸n sobre el grado de similitud de un proceso con otro o sobre la independencia de un proceso de otro. En otras palabras, se requiere determinar la relaci贸n entre las se帽ales, es decir, encontrar una correlaci贸n . Los m茅todos de correlaci贸n se utilizan en una amplia gama de tareas: b煤squeda de se帽ales, visi贸n por computadora y procesamiento de im谩genes, en problemas de radar para determinar las caracter铆sticas de los objetivos y determinar la distancia a un objeto. Adem谩s, la correlaci贸n se usa para buscar se帽ales d茅biles en el ruido.

La convoluci贸n describe la interacci贸n de las se帽ales entre s铆. Si una de las se帽ales es la respuesta al impulso del filtro, entonces la convoluci贸n de la secuencia de entrada con la respuesta al impulso no es m谩s que una reacci贸n del circuito a la acci贸n de entrada. En otras palabras, la se帽al resultante refleja el paso de la se帽al a trav茅s del filtro.

La funci贸n de autocorrelaci贸n (ACF) se utiliza en la codificaci贸n de informaci贸n. La elecci贸n de la secuencia de codificaci贸n de acuerdo con los par谩metros de longitud, frecuencia y forma se debe en gran medida a las propiedades de correlaci贸n de esta secuencia. La mejor secuencia de c贸digo tiene la menor probabilidad de detecci贸n u operaci贸n falsa (para detectar se帽ales, para dispositivos de umbral) o sincronizaci贸n falsa (para transmitir y recibir secuencias de c贸digo).

Esta secci贸n presenta una tabla que compara la efectividad de la convoluci贸n r谩pida y la convoluci贸n calculada por la f贸rmula directa (por el n煤mero de multiplicaciones reales).

Como puede ver, para longitudes de FFT de hasta 64, la convoluci贸n r谩pida pierde con el m茅todo directo. Sin embargo, con un aumento en la longitud de FFT, los resultados cambian en la direcci贸n opuesta: una convoluci贸n r谩pida comienza a superar al m茅todo directo. Obviamente, cuanto m谩s larga sea la FFT, mejor ser谩 la ganancia en el m茅todo de frecuencia.

NConvoluci贸nConvoluci贸n r谩pidaActitud
8644480,14
1625610880.24
32102425600.4 0.4
64409658880.7
12816K133121,23
...........
20484 millones31129613,5

Se帽ales aleatorias y ruido


En esta secci贸n, se introduce el concepto de se帽ales aleatorias, densidad de probabilidad, ley de distribuci贸n aleatoria. Se consideran los momentos matem谩ticos: media (expectativa matem谩tica) y varianza (o la ra铆z de esta cantidad es la desviaci贸n est谩ndar). Tambi茅n en esta secci贸n, la distribuci贸n normal y el concepto relacionado de ruido blanco se consideran la principal fuente de ruido (interferencia) durante el procesamiento de la se帽al.

Una se帽al aleatoria es una funci贸n del tiempo cuyos valores no se conocen de antemano y solo pueden predecirse con cierta probabilidad . Las caracter铆sticas principales de las se帽ales aleatorias incluyen:

  • ley de distribuci贸n (el tiempo de residencia relativo del valor de la se帽al en un cierto intervalo),
  • distribuci贸n espectral de potencia de se帽al.


Ruido AWGN

En las tareas DSP, las se帽ales aleatorias se dividen en dos clases:

  • ruido: fluctuaciones aleatorias que consisten en un conjunto de diferentes frecuencias y amplitudes,
  • se帽ales que transportan informaci贸n, para cuyo procesamiento es necesario recurrir a m茅todos probabil铆sticos.


Usando variables aleatorias, podemos simular el efecto de un medio real en el paso de una se帽al desde una fuente a un receptor de datos. Cuando una se帽al pasa a trav茅s de alg煤n enlace ruidoso, el llamado ruido blanco se agrega a la se帽al. Como regla general, la densidad espectral de dicho ruido se distribuye uniformemente (por igual) en todas las frecuencias, y los valores de ruido en el dominio del tiempo se distribuyen normalmente (ley de distribuci贸n gaussiana). Dado que el ruido blanco se agrega f铆sicamente a las amplitudes de la se帽al en las muestras de tiempo seleccionadas, se denomina ruido gaussiano blanco aditivo (AWGN).

Se帽ales, Modulaci贸n y Manipulaci贸n


Esta secci贸n muestra los m茅todos b谩sicos para cambiar uno o m谩s par谩metros de una se帽al arm贸nica. Se introducen los conceptos de amplitud, frecuencia y modulaci贸n de fase. En particular, se destaca la modulaci贸n de frecuencia lineal utilizada en problemas de radar. Se muestran las principales caracter铆sticas de las se帽ales, los espectros de las se帽ales moduladas dependiendo de los par谩metros de modulaci贸n.

Modulaci贸n de frecuencia

Por conveniencia, se ha creado un conjunto de funciones en Python que implementa los tipos de modulaci贸n anteriores. Ejemplo de implementaci贸n de se帽al chirp:

 def signal_chirp(amp=1.0, freq=0.0, beta=0.25, period=100, **kwargs): """ Create Chirp signal Parameters ---------- amp : float Signal magnitude beta : float Modulation bandwidth: beta < N for complex, beta < 0.5N for real freq : float or int Linear frequency of signal period : integer Number of points for signal (same as period) kwargs : bool Complex signal if is_complex = True Modulated by half-sine wave if is_modsine = True """ is_complex = kwargs.get('is_complex', False) is_modsine = kwargs.get('is_modsine', False) t = np.linspace(0, 1, period) tt = np.pi * (freq * t + beta * t ** 2) if is_complex is True: res = amp * (np.cos(tt) + 1j * np.sin(tt)) else: res = amp * np.cos(tt) if is_modsine is True: return res * np.sin(np.pi * t) return res 

Modulaci贸n de chirrido

Tambi茅n en esta secci贸n de la teor铆a de la transmisi贸n de mensajes discretos se describen tipos de modulaci贸n digital: se describen manipulaciones. Como en el caso de las se帽ales anal贸gicas, las secuencias arm贸nicas digitales se pueden manipular en amplitud, fase y frecuencia (o varios par谩metros a la vez).

Manipulaci贸n de frecuencia

Filtros digitales - IIR y FIR


Una secci贸n suficientemente grande dedicada al filtrado digital de secuencias discretas. En las tareas de procesamiento de se帽al digital, los datos fluyen a trav茅s de circuitos llamados filtros . Los filtros digitales, como los anal贸gicos, tienen diferentes caracter铆sticas: frecuencia: respuesta de frecuencia, respuesta de fase, tiempo: respuesta de impulso, as铆 como la caracter铆stica de transferencia del filtro. Los filtros digitales se utilizan principalmente para mejorar la calidad de la se帽al, para aislar una se帽al de una secuencia de datos o para degradar se帽ales no deseadas, para suprimir ciertas se帽ales en las secuencias de muestras entrantes.

Se帽ales FIR IIR

La secci贸n enumera las principales ventajas y desventajas de los filtros digitales (en comparaci贸n con los anal贸gicos). Se introduce el concepto de impulso y caracter铆sticas de transferencia del filtro. Se consideran dos clases de filtros: con una respuesta de impulso infinita (IIR) y una respuesta de impulso finita (FIR). Se muestra un m茅todo para dise帽ar filtros en forma can贸nica y directa . Para los filtros FIR, se considera la cuesti贸n de c贸mo cambiar a una forma recursiva.

Esquema IIR FIR

Para los filtros FIR, el proceso de dise帽o del filtro se muestra desde la etapa de desarrollo de las especificaciones t茅cnicas (con los par谩metros principales indicados), hasta la implementaci贸n de software y hardware: busque los coeficientes del filtro (teniendo en cuenta la forma de representaci贸n del n煤mero, profundidad de bits, etc.). Se introducen las definiciones de filtros FIR sim茅tricos, la respuesta de fase lineal y su relaci贸n con el concepto de retraso grupal.

FIR camino completo

Funciones de ventana en tareas de filtrado


En las tareas de procesamiento de se帽al digital, se utilizan funciones de ventana de varias formas que, cuando se superponen a una se帽al en el dominio del tiempo, pueden mejorar cualitativamente sus caracter铆sticas espectrales. Una gran cantidad de varias ventanas se debe principalmente a una de las caracter铆sticas principales de cualquier superposici贸n de ventanas. Esta caracter铆stica se expresa en la relaci贸n entre el nivel de los l贸bulos laterales y el ancho del l贸bulo central. Regla:
Cuanto m谩s fuerte es la supresi贸n de los l贸bulos laterales del espectro, m谩s ancho es el l贸bulo principal del espectro y viceversa.

Victorias (tiempo)

Una de las aplicaciones de las funciones de ventana: detecci贸n de se帽ales d茅biles en el contexto de las m谩s fuertes al suprimir el nivel de los l贸bulos laterales. Las funciones de la ventana principal en las tareas de DSP son ** triangular, sinusoidal, Lanczos, Hann, Hamming, Blackman, Harris, ventana Blackman-Harris, ventana plana, ventana Natall, Gauss, Kaiser ** y muchas otras. La mayor铆a de ellos se expresan a trav茅s de una serie finita sumando se帽ales arm贸nicas con pesos espec铆ficos. Dichas se帽ales se implementan perfectamente en la pr谩ctica en cualquier dispositivo de hardware (circuitos l贸gicos programables o procesadores de se帽al).

Victorias (frecuencia)

Muestreo Decimaci贸n e interpolaci贸n


En esta secci贸n se analizan los problemas del procesamiento de se帽ales de varias velocidades: cambios en la frecuencia de muestreo. El procesamiento de se帽ales a m煤ltiples velocidades (procesamiento de m煤ltiples velocidades) sugiere que en el proceso de conversi贸n lineal de se帽ales digitales, es posible cambiar la frecuencia de muestreo en la direcci贸n de disminuci贸n o aumento, o en un n煤mero fraccionario de veces. Esto conduce a un procesamiento de se帽al m谩s eficiente, ya que abre la posibilidad de utilizar las frecuencias de muestreo m铆nimas permitidas y, como resultado, una reducci贸n significativa en el rendimiento inform谩tico requerido del sistema digital dise帽ado.

Decimaci贸n (decimaci贸n): disminuci贸n de la resoluci贸n. Interpolaci贸n : aumento de la frecuencia de muestreo.

La secci贸n tambi茅n considera la clase de filtros FIR homog茅neos, que se denominan filtros de peine integral (CIC, integrador en cascada - peine). Se muestran la implementaci贸n, las propiedades b谩sicas y las caracter铆sticas de los filtros CIC. Debido a la linealidad de las operaciones matem谩ticas que ocurren en el filtro CIC, es posible conectar en cascada varios filtros en una fila, lo que da una disminuci贸n proporcional en el nivel de los l贸bulos laterales, pero tambi茅n aumenta el "bloqueo" del l贸bulo principal de la caracter铆stica de amplitud-frecuencia.

Filtro cic en cascada

Gr谩fico de la respuesta de frecuencia del filtro seg煤n el coeficiente de diezmado:

Respuesta de frecuencia de CIC

Tambi茅n en esta secci贸n discutimos el problema de aumentar la profundidad de bits de los datos en la salida del filtro CIC, dependiendo de sus par谩metros. Esto es especialmente importante en las tareas de implementaci贸n de software, en particular en FPGA.

Para la implementaci贸n pr谩ctica de filtros CIC en Python, se ha desarrollado una clase separada CicFilter que implementa m茅todos de diezmado e interpolaci贸n. Tambi茅n se muestran cambios en la frecuencia de muestreo utilizando los m茅todos integrados del paquete scipy Python.

Clase Python CicFilter para procesamiento de se帽al digital
 class CicFilter: """ Cascaded Integrator-Comb (CIC) filter is an optimized class of finite impulse response (FIR) filter. CIC filter combines an interpolator or decimator, so it has some parameters: R - decimation or interpolation ratio, N - number of stages in filter (or filter order) M - number of samples per stage (1 or 2)* * for this realisation of CIC filter just leave M = 1. CIC filter is used in multi-rate processing. In hardware applications CIC filter doesn't need multipliers, just only adders / subtractors and delay lines. Equation for 1st order CIC filter: y[n] = x[n] - x[n-RM] + y[n-1]. Parameters ---------- x : np.array input signal """ def __init__(self, x): self.x = x def decimator(self, r, n): """ CIC decimator: Integrator + Decimator + Comb Parameters ---------- r : int decimation rate n : int filter order """ # integrator y = self.x[:] for i in range(n): y = np.cumsum(y) # decimator y = y[::r] # comb stage return np.diff(y, n=n, prepend=np.zeros(n)) def interpolator(self, r, n, mode=False): """ CIC inteprolator: Comb + Decimator + Integrator Parameters ---------- r : int interpolation rate n : int filter order mode : bool False - zero padding, True - value padding. """ # comb stage y = np.diff(self.x, n=n, prepend=np.zeros(n), append=np.zeros(n)) # interpolation if mode: y = np.repeat(y, r) else: y = np.array([i if j == 0 else 0 for i in y for j in range(r)]) # integrator for i in range(n): y = np.cumsum(y) if mode: return y[1:1 - n * r] else: return y[r - 1:-n * r + r - 1] 



Decimaci贸n / Interpolaci贸n CIC

Finalmente, esta secci贸n proporciona una clase especial de filtros: el promedio m贸vil. Se muestran tres m茅todos de implementaci贸n: mediante convoluci贸n de se帽ales, utilizando un filtro FIR y un filtro IIR.

MAF, filtro de media m贸vil

Conclusi贸n


Espero que este curso en conjunto con mis art铆culos anteriores sobre el procesamiento digital de se帽ales FPGA brinde beneficios pr谩cticos y ayude al lector a comprender mejor los conceptos b谩sicos del procesamiento digital de se帽ales. Este proyecto ser谩 mejorado y complementado con nuevo material 煤til y no menos interesante. Sigue el desarrollo!

Adem谩s de este material, apoyo y desarrollo mi proyecto en los principales m贸dulos DSP (en Python). Contiene un paquete para generar varias se帽ales, una clase de filtros CIC para problemas de decimaci贸n e interpolaci贸n, un algoritmo para calcular los coeficientes de un filtro FIR corrector, un filtro de promedio m贸vil, un algoritmo para calcular una FFT ultra larga a trav茅s de m茅todos de conversi贸n bidimensionales (este 煤ltimo fue muy 煤til cuando se trabajaba con implementaci贸n de hardware en FPGA) .

Gracias por su atencion!

Source: https://habr.com/ru/post/460445/


All Articles