Рекомендация для книги - Написание кода DSP на С

12

Я ищу хорошую книгу, которая просто покажет, как вы на самом деле пишете код на C, чтобы выполнить все основные методы DSP.

  1. FFT.
  2. Фильтры нижних и верхних частот.
  3. Автокорреляция.
  4. Обработка шума.

И все основы DSP, от теории до реального кода на C.

Например, у меня есть 1000 сэмплов, теперь я хотел бы вычислить их БПФ, убрать шумы и затем вернуться к оси времени.

Есть ли что-то хорошее, что покрывает все это?

Curnelious
источник
1
Хороший вопрос! Я изменил тэг на reference-request, потому что, кажется, это то, что вы просите.
Питер К.
2
Является ли DFFT опечаткой?
Жиль
Да, нет DFFT, только FFT
Brethlosze

Ответы:

13

Я могу порекомендовать вам две книги о DSP для языка Си.

Embree PM - C Алгоритмы языка для цифровой обработки сигналов

Он старый, и вы можете легко получить его из вторых рук по достойной цене. Он охватывает почти все 4 темы, которые вы описали.

Другой, который я рекомендую:

Малепати Х. - Обработка цифрового мультимедиа: алгоритмы DSP с использованием C

Он охватывает гораздо больше тем (включая алгоритмы исправления ошибок и алгоритмы обработки изображений / видео). Хорошая вещь об этом - то, что тестовые сигналы предоставлены, чтобы проверить Вашу реализацию.


Я только что вспомнил, что на моем столе есть еще одна книга, в которой есть некоторый C-код для DSP.

Press WH - Численные рецепты: искусство научных вычислений

Есть две главы о преобразовании Фурье и его приложениях.


Последнее предложение - если вы можете, пожалуйста, используйте существующую библиотеку C вместо того, чтобы писать свои собственные инструменты. Нет смысла заново изобретать колесо.

Jojek
источник
4
Как и любая другая способность, изобретать лучше всего, если начинать с простейших примеров и достаточно практиковать. Таким образом, всегда полезно изобретать колесо не потому, что оно добавляет ценность как достижение, а потому, что оно позволяет изобретателю создать необходимую картину природы изобретений.
Fat32
3
Я полностью согласен с этим. Тем не менее в 99% проектов, которыми я занимался, не было времени заново изобретать колесо. С другой стороны, когда я занимаюсь своими делами дома, то в 99% случаев я заново изобретаю колесо, чтобы изучить и улучшить существующие инструменты.
jojek
На мой взгляд, использование существующих библиотек - это беспорядок, не то, чтобы вы все их объединяли в одну структуру, вы должны зависеть от каждой из них, а с DSP у вас всегда есть разные виды входных данных, и все гораздо сложнее. сложный то просто черный ящик, который делает то и это.
Curnelious
@Curnelious Даже если вы в какой-то степени правы (и в отношении некоторых библиотек), я не могу согласиться с тем, что все существующие библиотеки беспорядок. И мы должны признать, что мы все их используем. Дело в философии, а не в реальности.
Fat32
Одним из больших преимуществ использования хорошо известных библиотек является то, что пользователь может быть более или менее уверен в том, что код на самом деле рассматривается. Довольно часто могут быть некоторые крайние случаи, о которых люди не будут думать, что может быть довольно проблематичным в некоторых очень специфических ситуациях. Я не могу думать о примерах DSP прямо сейчас, но один очень наглядный пример проблемы общего типа - это попытка подсчитать количество минут от определенной даты в прошлом до настоящего момента. Сначала это может выглядеть так просто, как просто получить количество дней, но когда в игру вступают часы и календарь, это становится очень сложно.
AndrejaKo
7

Я бы порекомендовал Введение в обработку сигналов от SJ Orfanidis. Это отличная книга с хорошим сочетанием теории и практики, а также примеры кода на C и Matlab. Как только вы проработаете это, вы будете знать достаточно, чтобы продолжать самостоятельно.

Мэтт Л.
источник
0

Embree PM - C Алгоритмы языка для цифровой обработки сигналов

был полезен в моей работе с MSC при создании фильтров ... хотя вы можете создавать заголовки с помощью Matlab-кодера .... У меня были проблемы только с реализацией его fft, который был с комплексными числами вместо триггера, который легче реализовать в реальной жизни ,

Тика Ворка - аспирант
источник
-1

Вы можете посмотреть исходный код openSAL и Octave источников функций обработки сигналов Matlab (не C, но полезно). Это то, что я сделал.

VK69UK
источник
Это рискованная процедура .... Код Matlab включает в себя так много вложенных функций, и вполне вероятно, что он закончит обратный инжиниринг кода ... Я пробовал это в прошлом, и я не думаю, что новичок должен это делать
Бретлозе