Recommandation pour le livre - Écriture du code DSP en C

12

Je cherche un bon livre, qui montre simplement comment vous écrivez réellement un code en C, pour faire toutes les principales méthodes DSP.

  1. FFT.
  2. Filtres passe-bas et passe-haut.
  3. Auto-corrélation.
  4. Traitement du bruit.

Et toutes les bases du DSP, de la théorie à un vrai code en C.

Par exemple, j'ai 1000 échantillons, maintenant je voudrais en calculer la FFT, supprimer les bruits, puis revenir à l'axe du temps.

Y a-t-il quelque chose de bon qui couvre tout cela?

Curnelious
la source
1
Bonne question! J'ai changé une balise en référence-demande parce qu'elle semble être ce que vous demandez.
Peter K.
2
DFFT est-il une faute de frappe?
Gilles
Oui, il n'y a pas de DFT uniquement FFT
Brethlosze

Réponses:

13

Je peux vous recommander deux livres sur DSP pour le langage C.

Embree PM - Algorithmes de langage C pour le traitement numérique du signal

Il est ancien et vous pouvez facilement l'obtenir d'occasion pour un prix décent. Il couvre à peu près les 4 sujets que vous avez décrits.

L'autre que je recommande est:

Malepati H. - Traitement des médias numériques: algorithmes DSP utilisant C

Il couvre bien plus de sujets (y compris les algorithmes de correction d'erreurs et les algorithmes de traitement d'image / vidéo). La bonne chose à ce sujet est que des signaux de test sont fournis pour tester votre implémentation.


Je viens de rappeler qu'il y a un autre livre sur mon bureau qui contient du code C pour DSP.

Presse WH - Recettes numériques: l'art du calcul scientifique

Il y a deux chapitres sur la transformée de Fourier et ses applications.


Une dernière suggestion - si vous le pouvez, veuillez utiliser une bibliothèque C existante au lieu d'écrire vos propres outils. Il ne sert à rien de réinventer la roue.

jojek
la source
4
comme toute autre capacité, il est préférable d'apprendre à inventer à partir d'exemples les plus simples et suffisamment mis en pratique. Il est donc toujours avantageux d’inventer la roue non pas parce qu’elle ajoute une valeur en tant qu’accomplissement, mais parce qu’elle permet à l’inventeur de se forger les connaissances nécessaires sur la nature des inventions.
Fat32
3
Je suis entièrement d'accord avec cela. Néanmoins, dans 99% des projets que j'ai réalisés, je n'ai pas eu le temps de réinventer la roue. D'un autre côté, quand je fais mes propres trucs à la maison, alors dans 99% des cas, je réinvente la roue pour apprendre et améliorer les outils actuels.
jojek
À mon avis, l'utilisation des bibliothèques existantes est une sorte de gâchis, ce n'est pas que vous les ayez toutes dans un même cadre, vous devez dépendre de chacune d'entre elles, et avec DSP vous avez toujours différents types d'entrées, et les choses sont beaucoup plus compliqué alors juste une boîte noire qui fait ceci et cela.
Curnelious
@Curnelious Eventhough vous avez raison dans une certaine mesure (et pour certaines bibliothèques), je ne peux pas convenir que toutes les bibliothèques existantes sont un gâchis. Et nous devons admettre que nous les utilisons tous. Le point concerne la philosophie plutôt que la réalité.
Fat32
Un gros avantage de l'utilisation de bibliothèques bien connues est que l'utilisateur peut être plus ou moins sûr que le code est en fait en quelque sorte révisé. Très souvent, il peut y avoir des cas marginaux auxquels les gens ne penseront pas, ce qui peut être assez problématique dans certaines situations très spécifiques. Je ne peux pas penser aux exemples DSP pour le moment, mais un exemple très illustratif de type général de problème essaie de calculer le nombre de minutes d'une certaine date dans le passé jusqu'à maintenant. Au début, cela peut sembler aussi simple que d'obtenir le nombre de jours, mais lorsque les changements d'horloge et de calendrier entrent en jeu, cela devient très compliqué.
AndrejaKo
7

Je recommanderais Introduction to Signal Processing par SJ Orfanidis. C'est un excellent livre avec un bon mélange de théorie et de pratique, et il contient également des exemples de code en C et Matlab. Une fois que vous aurez travaillé, vous en saurez assez pour continuer par vous-même.

Matt L.
la source
0

Embree PM - Algorithmes de langage C pour le traitement numérique du signal

était utile dans mon travail MSC dans la création de filtres ... bien que vous puissiez construire les en-têtes avec le codeur Matlab .... J'ai seulement eu des problèmes avec l'implémentation de son fft qui était avec des nombres complexes à la place si trig qui est plus facile à implémenter dans la vie réelle .

Chika Worka - doctorante
la source
-1

Vous pouvez consulter le code source des sources openSAL et Octave des fonctions de traitement du signal Matlab (pas C, mais utile). C'est ce que j'ai fait.

VK69UK
la source
Il s'agit d'une procédure risquée .... Le code Matlab comprend tellement de fonctions imbriquées et il est très probable qu'il termine la rétro-ingénierie du code .... J'ai essayé cela par le passé et non je pense qu'un novice devrait le faire
Brethlosze