Recomendación para libro - Escribir código DSP en C

12

Estoy buscando un buen libro, que simplemente muestre cómo realmente escribe un código en C, para hacer todos los métodos DSP principales.

  1. FFT.
  2. Filtros de paso bajo y paso alto.
  3. Correlación automática
  4. Procesamiento de ruido.

Y todos los conceptos básicos de DSP, desde la teoría hasta un código real en C.

Por ejemplo, tengo 1000 muestras, ahora me gustaría calcular FFT, eliminar ruidos y luego volver al eje de tiempo.

¿Hay algo bueno que cubra todo esto?

Curioso
fuente
1
¡Buena pregunta! Cambié una etiqueta a solicitud de referencia porque parece ser lo que estás pidiendo.
Peter K.
2
¿DFFT es un error tipográfico?
Gilles
Sí, no hay solo DFFT FFT
Brethlosze

Respuestas:

13

Te puedo recomendar dos libros sobre DSP para lenguaje C.

Embree PM - Algoritmos de lenguaje C para procesamiento de señal digital

Es viejo y puede obtenerlo fácilmente de segunda mano por un precio decente. Cubre prácticamente los 4 temas que describiste.

El otro que recomiendo es:

Malepati H. - Procesamiento de medios digitales: Algoritmos DSP usando C

Cubre muchos más temas (incluidos los algoritmos de corrección de errores y los algoritmos de procesamiento de imagen / video). Lo bueno de eso es que se proporcionan señales de prueba para probar su implementación.


Acabo de recordar que hay otro libro en mi escritorio que tiene un código C para DSP.

Presione WH - Recetas Numéricas: El Arte de la Computación Científica

Hay dos capítulos sobre la Transformada de Fourier y sus aplicaciones.


Una última sugerencia: si puede, utilice una biblioteca C existente en lugar de escribir sus propias herramientas. No tiene sentido reinventar la rueda.

jojek
fuente
44
Como cualquier otra habilidad, la invención se aprende mejor cuando se comienza con ejemplos más simples y se practica lo suficiente. Por lo tanto, siempre es beneficioso inventar la rueda no porque agregue un valor como un logro, sino porque le permite al inventor desarrollar la comprensión necesaria de la naturaleza de las invenciones.
Fat32
3
Estoy totalmente de acuerdo con eso. Sin embargo, en el 99% de los proyectos que he estado haciendo no hubo tiempo para reinventar la rueda. Por otro lado, cuando estoy haciendo mis propias cosas en casa, en el 99% de los casos estoy reinventando la rueda para aprender y mejorar las herramientas actuales.
jojek
En mi opinión, usar las bibliotecas existentes es un desastre, no es que las tenga todas en un solo marco, debe depender de cada una de ellas, y con DSP siempre tiene diferentes tipos de entradas, y las cosas son mucho más complicado entonces solo una caja negra que hace esto y aquello.
Curnelious
@Curnelious Event Aunque tengas razón hasta cierto punto (y para algunas bibliotecas), no puedo aceptar que todas las bibliotecas existentes sean un desastre. Y debemos admitir que todos los estamos usando. El punto es sobre la filosofía más que la realidad.
Fat32
Una gran ventaja de usar bibliotecas conocidas es que el usuario puede estar más o menos seguro de que el código se revisa de hecho. Muy a menudo puede haber algunos casos extremos en los que las personas no pensarán que pueden ser bastante problemáticos en algunas situaciones muy específicas. No puedo pensar en ejemplos de DSP en este momento, pero un ejemplo muy ilustrativo de un tipo general de problema es tratar de calcular el número de minutos desde una fecha determinada en el pasado hasta ahora. Al principio, puede parecer tan simple como obtener el número de días, pero cuando entran en juego la hora del reloj y los cambios de calendario, se vuelve muy complicado.
AndrejaKo
7

Recomiendo Introducción al procesamiento de señales por SJ Orfanidis. Es un gran libro con una buena combinación de teoría y práctica, y también tiene ejemplos de código en C y Matlab. Una vez que lo haya superado, sabrá lo suficiente para continuar solo.

Matt L.
fuente
0

Embree PM - Algoritmos de lenguaje C para procesamiento de señal digital

fue útil en mi trabajo de MSC en la creación de filtros ... aunque puedes construir los encabezados con el codificador Matlab ... Solo tuve problemas con la implementación de su fft que era con números complejos en su lugar si trig es más fácil de implementar en la vida real .

Chika Worka - estudiante de doctorado
fuente
-1

Puede consultar el código fuente de las fuentes openSAL y Octave de las funciones de procesamiento de señales de Matlab (no C, pero útil). Esto es lo que hice.

VK69UK
fuente
Este es un procedimiento arriesgado ... El código de Matlab incluye tantas funciones anidadas y es muy probable que termine la ingeniería inversa del código ... Intenté esto en el pasado y no creo que un novato deba hacer esto
Brethlosze