Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Think DSP. Цифровая обработка сигналов на Python

Покупка
Артикул: 672218.02.99
Изучить обработку сигналов легко - достаточно знания основ математики и программирования на Python. Обычно изучение этой сложной темы начинают с теории, а в основу данной книги положены сугубо практические примеры. Уже в первой главе звук будет разложен на гармоники, которые модифицируются и создают новые звуки. Кроме того, в книге рассмотрены: периодические сигналы и их спектры; гармоническая структура простого сигнала; чирпы и иные звуки с изменяющимся во времени спектром; шумовые сигналы и естественные источники шума; дискретное косинусное преобразование (ДКП) для сжатия информации; дискретное и быстрое преобразования Фурье для спектрального анализа, а также многое другое. Издание будет полезно всем, кто интересуется цифровой обработкой сигналов.
Аллен Б., Д. Дауни, Аллен Б. Think DSP. Цифровая обработка сигналов на Python / Аллен Б. Дауни ; пер. с англ. А.Э. Бряндинский. - Москва : ДМК Пресс, 2017. - 160 с. - ISBN 978-5-97060-454-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/1027527 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Аллен Б. Дауни

Think DSP

Цифровая обработка сигналов на Python

Think DSP

Allen B. Downey

Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo

Digital Signal Processing in Python

Москва, 2017

Think DSP

Аллен Б. Дауни

Цифровая обработка сигналов на Python

УДК    534:004.438Python
ББК    22.32с
Д21

Д21     Аллен Б. Дауни

Think DSP. Цифровая обработка сигналов на Python / пер. с англ. 
Бряндинский А. Э. – М.: ДМК Пресс, 2017. – 160 с.: ил.

ISBN 978-5-97060-454-0

Изучить обработку сигналов легко – достаточно знания основ 
математики и программирования на Python. Обычно изучение этой 
сложной темы начинают с теории, а в основу данной книги положены 
сугубо практические примеры. Уже в первой главе звук будет разложен на гармоники, которые модифицируются и создают новые звуки. 
Кроме того, в книге рассмотрены: периодические сигналы и их спектры; гармоническая структура простого сигнала; чирпы и иные звуки 
с изменяющимся во времени спектром; шумовые сигналы и естественные источники шума; дискретное косинусное преобразование (ДКП) 
для сжатия информации; дискретное и быстрое преобразования 
Фурь е для спектрального анализа, а также многое другое.
Издание будет полезно всем, кто интересуется цифровой обработкой сигналов.

 
 
 
 
 
     УДК   534:004.438Python
 
 
 
 
 
     ББК    22.32с

Authorized Russian translation of the English edition of Think DSP, ISBN 
9781491938454 © 2016 Allen B. Downey. This translation is published and sold 
by permission of O'Reilly Media, Inc., which owns or controls all rights to publish 
and sell the same.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без 
письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство 
не может гарантировать абсолютную точность и правильность приводимых 
сведений. В связи с этим издательство не несет ответственности за возможные 
ошибки, связанные с использованием книги.

ISBN 978-1-49193-845-4 (англ.)                     © 2016 Allen B. Downey
ISBN 978-5-97060-454-0 (рус.)                       © Оформление, перевод на русский язык,
 
          издание, ДМК Пресс, 2017

Оглавление

Введение ..........................................................8

Предисловие к русскому изданию ................................................... 8
Для кого эта книга? ......................................................................... 9
Работа с кодом ................................................................................ 9
Условные обозначения в этой книге .............................................. 11
Список корреспондентов .............................................................. 12

Глава 1. Звуки и сигналы .................................... 14

Периодические сигналы ................................................................ 14
Разложение в спектр ..................................................................... 16
Сигналы ........................................................................................ 18
Чтение и запись сигналов .............................................................. 20
Спектры ........................................................................................ 20
Объекты Wave................................................................................ 21
Объекты Signal .............................................................................. 22
Упражнения ................................................................................... 24

Глава 2. Гармоники............................................ 25

Треугольный сигнал ...................................................................... 25
Прямоугольный сигнал .................................................................. 27
Биения (алиасинг) ......................................................................... 29
Вычисление спектра ..................................................................... 31
Упражнения ................................................................................... 33

Глава 3. Апериодические сигналы ....................... 35

Линейный чирп .............................................................................. 35
Экспоненциальный чирп ............................................................... 37
Спектр чирпа ................................................................................. 38
Спектрограмма ............................................................................. 39
Предел Габора ............................................................................... 40
Утечка ........................................................................................... 41
Окна .............................................................................................. 42
Реализация спектрограмм ............................................................ 44

Оглавление

Упражнения ................................................................................... 46

Глава 4. Шум .................................................... 48

Некоррелированный шум .............................................................. 48
Интегральный спектр .................................................................... 51
Броуновский шум .......................................................................... 52
Розовый шум ................................................................................. 55
Гауссов шум .................................................................................. 57
Упражнения ................................................................................... 59

Глава 5. Автокорреляция .................................... 61

Корреляция ................................................................................... 61
Последовательная корреляция ..................................................... 64
Автокорреляция ............................................................................ 65
Автокорреляция периодических сигналов ..................................... 66
Корреляция как скалярное произведение ..................................... 70
Использование NumPy .................................................................. 71
Упражнения ................................................................................... 72

Глава 6. Дискретное косинусное преобразование ... 74

Синтез .......................................................................................... 74
Синтез с массивами ...................................................................... 75
Анализ .......................................................................................... 77
Ортогональные матрицы ............................................................... 78
ДКП-IV ........................................................................................... 80
Обратное ДКП ............................................................................... 81
Класс Dct....................................................................................... 82
Упражнения ................................................................................... 83

Глава 7. Дискретное преобразование Фурье ......... 85

Комплексные экспоненты .............................................................. 85
Комплексные сигналы ................................................................... 87
Задача синтеза ............................................................................. 88
Синтез с матрицами ...................................................................... 90
Задача анализа ............................................................................. 92
Эффективный анализ .................................................................... 92
ДПФ .............................................................................................. 93
Периодичность ДПФ ..................................................................... 95
ДПФ реальных сигналов ................................................................ 96
Упражнения ................................................................................... 98

Оглавление

Глава 8. Фильтрация и свертка ............................ 99

Сглаживание ................................................................................. 99
Свертка ....................................................................................... 102
Частотная область ....................................................................... 103
Теорема о свертке ....................................................................... 104
Гауссов фильтр ............................................................................ 106
Эффективная свертка ................................................................. 108
Эффективная автокорреляция .................................................... 109
Упражнения ................................................................................. 111

Глава 9. Дифференцирование и интегрирование ... 112

Конечные разности ..................................................................... 112
Частотная область ....................................................................... 113
Дифференцирование .................................................................. 115
Интегрирование .......................................................................... 117
Нарастающая сумма ................................................................... 119
Интегрирование шума ................................................................. 122
Упражнения ................................................................................. 123

Глава 10. Линейные стационарные системы ....... 125

Сигналы и системы ..................................................................... 125
Окна и фильтры ........................................................................... 127
Акустическая характеристика ...................................................... 128
Системы и свертка ...................................................................... 131
Доказательство теоремы о свертке ............................................. 134
Упражнения ................................................................................. 136

Глава 11. Модуляция и выборка (квантование) .... 138

Свертка с импульсами ................................................................. 138
Амплитудная модуляция.............................................................. 139
Выборка ...................................................................................... 142
Биения ........................................................................................ 145
Интерполяция ............................................................................. 148
Итог ............................................................................................ 150
Упражнения ................................................................................. 151

Предметный указатель .................................... 153

Об авторе ...................................................... 159

Об обложке.................................................... 159

Введение

Обработка сигналов – одна из любимых тем автора. Она полезна во 
многих областях науки и техники – и, если постичь основы, то будет легче разобраться во многих вещах, видимых в мире, и тем более 
в слышимых.
Но с обработкой сигналов практически никто, кроме инженеров, 
не знаком. Проблема в том, что большинство книг (и использующие 
их курсы) представляют материал «снизу вверх», начиная с математических абстракций, например с фазоров. И эти книги обычно теоретические, с немногочисленными и малополезными примерами.
Цель этой книги – научить тех, кто умеет программировать, использовать свое умение для познания нового, да еще и с удовольствием.
С таким подходом, основанным на программировании, можно сразу понять самые важные идеи. Прочитав первую главу, вы научитесь 
анализировать звукозаписи или иные сигналы, а также генерировать 
новые звуки. В каждой главе вводятся новый прием и приложение, 
работающее с реальными сигналами. На каждом этапе сначала изучается применение приема, а затем – его работа.
Такой подход более практичен, и, вероятно, занимателен.

Предисловие к русскому изданию

Эта книга чрезвычайно необычна. Она аканонична во всем. «Оголтелый» прагматизм автора, вероятно, может вызвать легкий обморок у 
специалистов с академическим образованием.
И именно этим книга хороша! Автор использует практически все 
методы и алгоритмы, известные на сегодняшний день, причем в ясной и прозрачной манере. Читатель избавлен от скучной теории, от 
мрачных тенет аналитической геометрии, линейной алгебры и высшего анализа.
Автор сразу вооружает читателя готовыми инструментами, которые пригодятся в самых разных областях науки, техники и предпринимательства, где нужна и полезна цифровая обработка сигналов.

Введение

У книги есть один недостаток – не введено понятие аналитического 
сигнала. Но большинство читателей от этого только выигрывает! Ведь, 
изучив материал книги, им будет заметно проще перейти от обработки 
записи звука скрипки к обработке нестационарных случайных сигналов – 
от радиолокаторов или гидроакустических станций до ультразвуковых 
диагностических приборов или масс-спектрометров и газоанализаторов.

Для кого эта книга?

Примеры и соответствующий код для этой книги написаны на Python. 
Надо знать основы Python и основы объектно-ориентированного 
программирования – хотя бы уметь применять объекты, пусть и не 
свои собственные.
Если язык Python вам еще не знаком, можно начать с книги Аллена 
Б. Дауни (Allen B. Downey) Think Python (это введение в Python для 
тех, кто никогда ранее не программировал) или с книги Марка Луца 
(Mark Lutz) Learning Python – она удобнее для людей с опытом программирования.
В книге широко использованы NumPy и SciPy, и все используемые 
в них функции и структуры данных подробно объясняются. А если 
они уже известны, то это хорошо.
Предполагается, что читатель знаком с основами математики, в 
том числе с комплексными числами. Весь матанализ помнить не нужно; достаточно понятий об интегрировании и дифференцировании. 
По мере использования линейной алгебры все будет подробно объяснено.

Работа с кодом

Код и образцы звуков, используемые в этой книге, доступны в репозитории GitHub: https://github.com/AllenDowney/ThinkDSP. Для 
тех, кто не знаком с Git и GitHub, поясним: Git – это система управления версиями, в которой можно работать с входящими в проект 
файлами. Коллекция файлов под контролем Git называется «репозиторий». GitHub – это хостинг для хранения репозиториев Git, и у 
него удобный веб-интерфейс.
На домашней странице репозитория автора в GitHub с кодом можно работать несколькими способами:
• создать копию репозитория на GitHub, нажав кнопку «вилка» 
(fork). Если аккаунта на GitHub еще нет, его надо завести. По
Введение

сле разветвления (копии) появится новый, личный репозиторий GitHub; в нем удобнее отслеживать код при работе с этой 
книгой. Затем можно клонировать свой репозиторий, скопировав файлы на компьютер;
• клонировать репозиторий автора. Для этого аккаунт GitHub 
не нужен, но записать изменения обратно в GitHub уже нельзя;
• скачать файлы в архиве ZIP, нажав кнопку в правом нижнем 
углу страницы GitHub (если использовать Git нежелательно).
Весь код в книге работает без трансляции и в Python 2, и в Python 3.
Эта книга разработана с помощью Anaconda компании Continuum 
Analytics (Continuum Analytics, компания) – свободного дистрибутива Python, включающего все нужные для запуска кода пакеты (и 
многое другое). Устанавливается Anaconda легко. По умолчанию эта 
платформа ставится на уровне пользователя, а не на системном, так 
что права администратора не нужны. Она поддерживает и Python 2, 
и Python 3. Anaconda можно скачать из http://continuum.io/downloads.
Если использовать Anaconda нежелательно, то понадобятся следующие пакеты:
• NumPy  для работы с числами (http://www.numpy.org);
• SciPy для научных вычислений (http://www.scipy.org);
• Matplotlib для визуализации (http://matplotlib.org).
Эти пакеты часто используются, но они не входят ни в один дистрибутив Python, и в некоторых средах их бывает трудно установить. 
Если будут проблемы с их установкой, рекомендуется прибегнуть к 
Anaconda или одному из других дистрибутивов Python, включающих 
эти пакеты.
Большинство упражнений – это Python-скрипты, но в некоторых 
также используется «блокнот Jupyter». Ознакомиться с Jupyter и изучить его можно на http://jupyter.org.
Есть три способа работы с блокнотами Jupyter:
1. Запустить Jupyter на своем компьютере.
Если Anaconda установлена, то и Jupyter, вероятно, установлен по умолчанию. Проверьте это, запустив сервер из командной строки:

$ jupyter notebook

Если он не установлен, его можно установить в Anaconda:

$ conda install jupyter

Введение

При запуске сервера он запустит веб-браузер по умолчанию 
или же создаст новую вкладку в уже открытом окне браузера.
2. Запустить Jupyter в Binder.
Binder – это служба, запускающая Jupyter на виртуальной машине. По ссылке http://mybinder.org/repo/AllenDowney/
ThinkDSP открывается домашняя страница Jupyter с блокнотами для этой книги, а также дополнительными данными и 
скриптами.
Скрипты можно запускать и изменять их для запуска собственного кода, но виртуальная машина будет временной. Любые изменения пропадут, если пауза в работе с ней продлится 
более часа.
3. Просмотреть блокноты на nbviewer.
В книге также приводятся ссылки на nbviewer, с его помощью 
можно просматривать код и результаты. Это удобно для чтения блокнотов и прослушивания примеров, но ни изменить 
код, ни запустить его, ни использовать интерактивные виджеты нельзя.
Удачи в работе!

Условные обозначения в этой книге

В этой книге используются следующие типографские соглашения:
Курсив
Выделение новых терминов и особо значимых фрагментов 
текста.
Жирный шрифт
Используется для обозначения сочетаний клавиш, элементов 
программного интерфейса.

Моноширинный шрифт
Используется для обозначения URL-адресов и адресов электронной почты, листингов программ, имен файлов, расширений файлов, а также элементов программ, таких как имена 
переменных и функций, типов данных, инструкций и ключевых слов.

Моноширинный полужирный шрифт
Отображает набираемые пользователем команды или иной 
текст.

Введение

Список корреспондентов
Предложения или замечания по поводу книги направляйте на 
downey@allendowney.com. Если на основе ваших сообщений будут 
сделаны изменения, то автора сообщения добавят в список корреспондентов (при отсутствии специальных условий).
Желательно указывать хотя бы часть предложения, в котором обнаружена ошибка, – так ее легче найти. Можно сослаться и на номер 
страницы или название раздела, хотя это осложняет поиск. Спасибо 
за понимание!
• Прежде чем автор приступил к написанию этой книги, идеи, 
которые легли в ее основу, развивались в общении с Булосом 
Хэрбом (Boulos Harb) из Google и с Аурелио Рамосом (Aurelio 
Ramos), ранее работавшим в Harmonix Music Systems.
• Во время осеннего семестра 2013 года Натан Линц (Nathan 
Lintz) и Ян Дэниэр (Ian Daniher) работали со автором над независимым учебным проектом и помогли с первым изданием 
этой книги.
• На DSP-форуме Reddit пользователь под ником Ramjetsoundwave помог решить проблему с реализацией броуновского 
шума. Другой участник форума, andodli, нашел опечатку.
• Весной 2015 года этот материал преподавался совместно с 
проф. Оскаром Мур-Мирандой (Oscar Mur-Miranda) и проф. 
Сиддхартаном Говиндасами (Siddhartan Govindasamy). Оба 
внесли много предложений и исправлений.
• Сайлас Гигер (Silas Gyger) исправил арифметическую ошибку.
• Джузеппе Мазетти (Giuseppe Masetti) прислал ряд полезных 
замечаний.
Особая благодарность техническим рецензентам – Эрику Петерсу 
(Eric Peters), Брюсу Ливенсу (Bruce Levens) и Джону Винсенту (John 
Vincent) – за многие полезные замечания, разъяснения и исправления.
Также благодарность Freesound, источнику многих звуков, используемых в книге, и пользователям Freesound, предоставившим их. Некоторые из них включены в репозиторий GitHub этой книги, причем 
использованы оригинальные имена файлов, так что источники легко 
найти.
К сожалению, большинство пользователей Freesound не указывает 
своих имен, поэтому здесь можно привести только их ники. Образцы 

Введение

звуков, используемые в книге, были предоставлены пользователями 
Freesound – iluppai, wcfl10, thirsk, docquesting, kleeb, landup, zippi1, 
themusicalnomad, bcjordan, rockwehrmann, marcgascon7, jcveliz. 
Спасибо им всем!