Think DSP. Цифровая обработка сигналов на Python
Покупка
Издательство:
ДМК Пресс
Автор:
Аллен Б. Дауни
Год издания: 2017
Кол-во страниц: 160
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-454-0
Артикул: 672218.02.99
Изучить обработку сигналов легко - достаточно знания основ математики и программирования на Python. Обычно изучение этой сложной темы начинают с теории, а в основу данной книги положены сугубо практические примеры. Уже в первой главе звук будет разложен на гармоники, которые модифицируются и создают новые звуки. Кроме того, в книге рассмотрены: периодические сигналы и их спектры; гармоническая структура простого сигнала; чирпы и иные звуки с изменяющимся во времени спектром; шумовые сигналы и естественные источники шума; дискретное косинусное преобразование (ДКП) для сжатия информации; дискретное и быстрое преобразования Фурье для спектрального анализа, а также многое другое. Издание будет полезно всем, кто интересуется цифровой обработкой сигналов.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- 11.03.03: Конструирование и технология электронных средств
- 11.03.04: Электроника и наноэлектроника
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Аллен Б. Дауни 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