Rekomendacja dla książki - Pisanie kodu DSP w C

12

Szukam dobrej książki, która po prostu pokaże, jak piszesz kod w C, aby wykonać wszystkie główne metody DSP.

  1. FFT.
  2. Filtry dolnoprzepustowe i górnoprzepustowe.
  3. Auto-korelacja.
  4. Przetwarzanie hałasu

I wszystkie podstawy DSP, od teorii do prawdziwego kodu w C.

Na przykład mam 1000 próbek, teraz chciałbym obliczyć FFT, usunąć szumy, a następnie przywrócić do osi czasu.

Czy jest coś dobrego, co obejmuje wszystkie te elementy?

Curnelious
źródło
1
Miłe pytanie! Zmieniłem tag na żądanie referencyjne, ponieważ wydaje się, że o to prosisz.
Peter K.
2
Czy DFFT to literówka?
Gilles
Tak, nie ma tylko DFFT FFT
Brethlosze

Odpowiedzi:

13

Mogę polecić dwie książki o DSP dla języka C.

Algorytmy językowe Embree PM - C do cyfrowego przetwarzania sygnałów

Jest stary i można go łatwo kupić z drugiej ręki za przyzwoitą cenę. Obejmuje prawie wszystkie 4 opisane przez Ciebie tematy.

Drugi polecam to:

Malepati H. - Cyfrowe przetwarzanie mediów: algorytmy DSP z wykorzystaniem C.

Obejmuje znacznie więcej tematów (w tym algorytmy korekcji błędów i algorytmy przetwarzania obrazu / wideo). Zaletą tego jest to, że dostarczane są sygnały testowe do testowania twojej implementacji.


Właśnie przypomniałem sobie, że na moim biurku jest inna książka z kodem C dla DSP.

Naciśnij WH - Przepisy numeryczne: sztuka obliczeń naukowych

Istnieją dwa rozdziały o transformacie Fouriera i jej zastosowaniach.


Ostatnia sugestia - jeśli możesz, skorzystaj z istniejącej biblioteki C zamiast pisać własne narzędzia. Ponowne wynalezienie koła nie ma sensu.

jojek
źródło
4
jak każda inna umiejętność, wynalazków najlepiej się uczyć, kiedy zaczynamy od najprostszych przykładów i wystarczająco praktykujemy. Dlatego zawsze korzystne jest wynalezienie koła nie dlatego, że stanowi wartość dodaną jako osiągnięcie, ale dlatego, że umożliwia wynalazcy uzyskanie niezbędnego wglądu w naturę wynalazków.
Fat32
3
Całkowicie się z tym zgadzam. Niemniej jednak w 99% projektów, które realizowałem, nie było czasu na ponowne wynalezienie koła. Z drugiej strony, kiedy robię własne rzeczy w domu, to w 99% przypadków odkrywam koło, aby uczyć się i ulepszać obecne narzędzia.
jojek
Moim zdaniem korzystanie z istniejących bibliotek jest rodzajem bałaganu, to nie tak, że masz je wszystkie w jednym frameworku, musisz polegać na każdym z nich, a dzięki DSP zawsze masz różne rodzaje danych wejściowych, a rzeczy są znacznie więcej skomplikowane to tylko czarna skrzynka, która robi to i tamto.
Curnelious
@ Ważne wydarzenie Chociaż masz rację do pewnego stopnia (i do niektórych bibliotek) Nie mogę się zgodzić, że wszystkie istniejące biblioteki są w rozsypce. I musimy przyznać, że wszyscy ich używamy. Chodzi raczej o filozofię niż o rzeczywistość.
Fat32
Jedną wielką zaletą korzystania ze znanych bibliotek jest to, że użytkownik może być mniej więcej pewien, że kod jest w rzeczywistości sprawdzany. Dość często zdarzają się przypadki skrajne, o których ludzie nie pomyślą, co może być dość problematyczne w niektórych bardzo specyficznych sytuacjach. Nie mogę teraz wymyślić przykładów DSP, ale jednym bardzo ilustrującym przykładem ogólnego rodzaju problemu jest próba obliczenia liczby minut od określonej daty w przeszłości do chwili obecnej. Początkowo może to wyglądać tak prosto, jak uzyskanie liczby dni, ale kiedy w grę wchodzą zmiany czasu i kalendarza, staje się to bardzo skomplikowane.
AndrejaKo,
7

Polecam Introduction to Signal Processing przez SJ Orfanidis. To świetna książka z dobrym połączeniem teorii i praktyki, a także zawiera przykłady kodu w C i Matlab. Po przejściu przez to będziesz wiedział wystarczająco dużo, aby kontynuować samodzielnie.

Matt L.
źródło
0

Algorytmy językowe Embree PM - C do cyfrowego przetwarzania sygnałów

był użyteczny w mojej pracy MSC w budowaniu filtrów ... chociaż możesz budować nagłówki za pomocą kodera Matlab ... Miałem tylko problemy z implementacją jego fft, która była ze złożonymi liczbami, jeśli trig był łatwiejszy do zaimplementowania w prawdziwym życiu .

Chika Worka - doktorantka
źródło
-1

Możesz zajrzeć do kodu źródłowego źródeł openSAL i Octave funkcji przetwarzania sygnałów Matlaba (nie C, ale przydatne). Oto co zrobiłem.

VK69UK
źródło
Jest to ryzykowna procedura .... Kod Matlab zawiera tak wiele zagnieżdżonych funkcji i bardzo prawdopodobne jest, że dokończy kodowanie kodu po zakończeniu inżynierii wstecznej ... Próbowałem tego w przeszłości i nie sądzę, że nowicjusz powinien to zrobić
Brethlosze