Raccomandazione per il libro - Scrittura del codice DSP in C


12

Sto cercando un buon libro, che mostri semplicemente come scrivere effettivamente un codice in C, per fare tutti i principali metodi DSP.

  1. FFT.
  2. Filtri passa basso e passa alto.
  3. Autocorrelazione.
  4. Elaborazione del rumore.

E tutte le basi di DSP, dalla teoria a un vero codice in C.

Ad esempio, ho ottenuto 1000 campioni, ora vorrei calcolarne FFT, rimuovere i rumori, quindi riportarli sull'asse del tempo.

C'è qualcosa di buono che copre tutti questi?


1
Bella domanda! Ho cambiato un tag in riferimento-richiesta perché sembra essere quello che stai chiedendo.
Peter K.

2
DFFT è un refuso?
Gilles

Sì, non c'è DFFT solo FFT
Brethlosze il

Risposte:


13

Posso consigliarti due libri su DSP per il linguaggio C.

Incorpora algoritmi di linguaggio PM - C per l'elaborazione del segnale digitale

È vecchio e puoi facilmente acquistarlo di seconda mano a un prezzo decente. Copre praticamente tutti e 4 gli argomenti che hai descritto.

L'altro che raccomando è:

Malepati H. - Elaborazione di supporti digitali: algoritmi DSP che utilizzano C

Copre molti più argomenti (inclusi algoritmi di correzione degli errori e algoritmi di elaborazione di immagini / video). La cosa bella di questo è che vengono forniti segnali di test per testare l'implementazione.


Ho appena ricordato che c'è un altro libro sulla mia scrivania che contiene un codice C per DSP.

Stampa WH - Ricette numeriche: l'arte del calcolo scientifico

Esistono due capitoli sulla trasformata di Fourier e le sue applicazioni.


Un ultimo suggerimento: se puoi, usa una libreria C esistente invece di scrivere i tuoi strumenti. Non ha senso reinventare la ruota.


4
come qualsiasi altra abilità, inventare è meglio appreso quando iniziato da esempi più semplici e praticato abbastanza. Quindi è sempre utile inventare la ruota non perché aggiunge un valore come risultato, ma perché consente all'inventore di costruire la necessaria comprensione della natura delle invenzioni.
Fat32

3
Sono assolutamente d'accordo con questo. Tuttavia, nel 99% dei progetti che ho realizzato, non c'era tempo per reinventare la ruota. D'altra parte, quando faccio le mie cose a casa, nel 99% dei casi reinvento la ruota per imparare e migliorare gli strumenti attuali.
jojek

Secondo me, usare le librerie esistenti è un po 'un casino, non è che le hai tutte in un framework, devi dipendere da ognuna di esse e con DSP hai sempre diversi tipi di input e le cose sono molto più complicato quindi solo una scatola nera che fa questo e quello.
Curnelious

@Curnelious Eventualmente, anche se hai ragione (e per alcune librerie) non posso essere d'accordo sul fatto che tutte le librerie esistenti siano un disastro. E dobbiamo ammettere che li stiamo usando tutti. Il punto riguarda la filosofia piuttosto che la realtà.
Fat32

Un grande vantaggio dell'utilizzo di librerie note è che l'utente può essere più o meno sicuro che il codice sia in effetti una sorta di revisione. Molto spesso ci possono essere alcuni casi limite a cui le persone non penseranno, che possono essere abbastanza problematici in alcune situazioni molto specifiche. Non riesco a pensare agli esempi di DSP in questo momento, ma un esempio molto illustrativo di tipo generale di problema sta cercando di calcolare il numero di minuti da una certa data in passato fino ad ora. All'inizio, può sembrare semplice come ottenere solo il numero di giorni, ma quando entrano in gioco l'ora e le modifiche al calendario, diventa molto complicato.
AndrejaKo


0

Incorpora algoritmi di linguaggio PM - C per l'elaborazione del segnale digitale

è stato utile nel mio lavoro di MSC nella costruzione di filtri ... anche se puoi costruire le intestazioni con il codificatore Matlab .... Ho avuto problemi solo con l'implementazione del suo fft che era con numeri complessi invece se trig che è più facile da implementare nella vita reale .


-1

Puoi guardare il codice sorgente delle fonti openSAL e Octave delle funzioni di elaborazione del segnale Matlab (non C, ma utile). Questo è quello che ho fatto.


Questa è una procedura rischiosa .... Il codice Matlab include così tante funzioni nidificate ed è molto probabile che finisca il reverse engineering del codice .... Ho provato questo in passato e non credo che un principiante dovrebbe farlo
Brethlosze
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.