Начинает свою работу единая страница курса "Основы цифровой обработки сигналов" направлений "Инфокоммуникационные технологии и системы связи" и "Радиотехника".

В настоящем разделе размещена единая информация, затрагивающая лабораторный практикум (состоящий из 6-ти лабораторных работ, выполняемых в пакете Matlab), лекционный материал и практические задания.

Место проведения: Физический факультет, к. 306 (309), 1-ый учебный корпус (лабораторный практикум), к. 218, 2-ой учебный корпус (ИТС-31БОРТ-31БО(лекционные занятия).

Время
  1. Направление "Инфокоммуникационные технологии и системы связи" (группа ИТС-31БО) лабораторный практикум раз в две недели по понедельникам, с 8.30 до 10.05 (числитель/знаменатель разделение на подгруппы), лекции каждую неделю по четвергам, с 14.15 до 15.50.
  2. Направление "Радиотехника" (группа РТ-31БО) лабораторный практикум раз в две недели по четвергам, с 10.15 до 11.50 (числитель), лекции каждую неделю по четвергам, с 14.15 до 15.50.
Темы лекционных занятий
    1. Введение в курс "Основы цифровой обработки сигналов" ("Цифровая фильтрация"). Работу C.E. Shannon "A Mathematical Theory of Communication", написанную в 1948 г., можно найти здесь или здесь. Книгу P. Prandony, M. Vetterly "Signal Processing for Communications" можно найти здесь (версия в html) или здесь (версия в pdf). При решении задач по курсу рекомендуется использовать источник [15] в дополнительных материалах ниже. Пример проигрывания звукового фрагмента с разной частотой дискретизации (ссылка). Пример генерации звукового колебания на основе алгоритма Карплуса-Стронга (ссылка). Материалы курса P. Prandony, M. Vetterly "Digital Signal Processing" на www.coursera.org  можно найти здесь (для доступа к материалам нужна регистрация). "Машина для генерации значений комплексной экспоненты" (ссылка).
    2. Дискретное преобразование Фурье. Быстрое преобразование Фурье. Теория и задачи по настоящему занятию могут быть найдены в главе 7 источника [15] в дополнительных материалах ниже, а также в главе 6 книги Брюханов Ю.А., Приоров А.Л., Джиган В.И., Хрящев В.В. "Основы цифровой обработки сигналов". Книга доступна в печатном виде в библиотеке ЯрГУ. Пример вычисления дискретного преобразования Фурье (ДПФ) для изображения, демонстрирующий преимущество ДПФ перед каноническим базисом при передаче данных (ссылка). Про работу с платой Arduino можно почитать здесь. Про интеграцию платы Arduino и Matlab можно узнать на следующем сайте. Пример интеграции платы Arduino c Matlab, рассмотренный на лекции, можно найти здесь. Машина для предсказания приливов (ссылка).
    3. Оконное преобразование Фурье. Лекция посвящается Дню космических войск России. 4 октября 1957 г. в СССР был запущен первый искусственный спутник "Спутник-1", который вращался на орбите 3 месяца и издавал "бип-бип" звуковой сигнал не несущий какой-либо информации. Звуковой сигнал первого спутника, записанный с использованием аналогового магнитофона, не отличался особым качеством. Однако, существование этого сигнала было захватывающим (сигнал первого спутника). Факт, что спутник может быть размещен на орбите и способен посылать сигналы на Землю, продемонстрировал возможность использования спутников связи для радио, телевидения, передачи телефонных разговоров через океаны! Это был революционный прорыв в то время. Понадобилось еще одно десятилетие, чтобы то, что казалось когда-то фантастическим, стало реальностью, в то время как передача сигналов со спутников на сегодняшний день является обычным делом. Запуск первого спутника продемонстрировал возможность освоения космоса и способствовал гонке между СССР и США, связанной с запуском первого человека (космонавта / астронавта) в космос. Это произошло в апреле 1961 г. (Гагарин Ю.А.) и в мая 1961 г. (Шеппард А.). В июле 1969 г. экипаж корабля "Апполон-11" высадился на поверхность Луны. В заключении необходимо отметить, что запуск первого спутника привел к возникновению "Спутникового кризиса", который способствовал срочности финансирования правительством США области естественных наук, чтобы не отставать от СССР в математике и инженерных науках, которые имели решающее значение в холодной войне. 
      Гордитесь своей страной и помните о том, что у каждого человека есть свое место в жизни! Пример практического использования оконного преобразования Фурье к обработке сигнала первого спутника и двухтонального многочастотного сигнала в Matlab можно скачать здесь.
    4. Введение в цифровые фильтры. Цифровые фильтры могут использоваться для решения разнообразных задач. Рассмотрим одну из них на примере ЛИС-системы. Представим себе, что в качестве импульсной характеристики такой системы выступает импульсный отклик помещения. Этот отклик можно получить с использованием микрофона, который записывает звук, представляющий рассеивание импульсного источника звука. Примером подобного отклика может выступать импульсный отклик Лозаннского собора, который измерил Докманич И. (Dokmanic I.) и его коллеги, записав звук лопнувшего в соборе воздушного шарика. Скачать эту запись можно здесь. Выполнение операции свертки этой записи (импульсной характеристики собора), например, с записью музыкального фрагмента, полученного с использованием виолончели, позволяет искусственно пересоздать акустику большого пространства собора. Пример Matlab-кода, выполняющего подобную операцию, можно скачать здесь.
    5. КИХ-фильтры с линейной фазочастотной характеристикой (ФЧХ). Иногда, когда читаешь книжки по ЦОС встречаешься с такой фразой: "КИХ-фильтры с линейной ФЧХ не искажают фазовые соотношения между гармониками сигнала". Так же в книжках указано, что линейная ФЧХ у фильтров является хорошим свойством этих фильтров. Почему это так? Почему отсутствие искажений фазовых соотношений между гармониками сигнала настолько значимо? Давайте проведем некоторый эксперимент. Возьмем два изображения. Вычислим от каждого из них двумерное дискретное преобразование Фурье (ДПФ), а также амплитудные и фазовые спектры этих изображений. Поменяем фазовые спектры изображений местами, а амплитудные спектры оставим без изменений. Выполним обратное преобразование Фурье. Получим результат, представленный ниже.
      Два верхних изображения  - это исходные картинки, то есть до обработки. Два нижних изображения - это картинки, полученные после указанной выше процедуры. Видно, что, поменяв фазовые спектры местами, мы получили изменение структуры первой и второй картинок. Они поменялись местами. Отметим, что истинное распределение интенсивностей пикселей на изображениях изменилось, но структура сигнала находится именно в фазе. Фазовый спектр сигнала несет больше информации, чем амплитудный! Поэтому искажение фазовых соотношений между гармониками должно приводить к искажению структуры сигнала. Matlab-код, который позволяет повторить эксперимент, проведенный выше, можно скачать здесь.
    6. Всепропускающие фильтры. Хорошо описанный теоретический материал с примерами и задачами по данной теме можно найти в источнике [15] в дополнительных материалах ниже. Анализировать нужно стр. 193-194, 209-212. Дополнительно рекомендуется обратиться к источнику [16] (стр. 89-91).
    7. Минимально-фазовые системы. Хорошо описанный теоретический материал с примерами и задачами по данной теме можно найти в источнике [15] в дополнительных материалах ниже. Анализировать нужно стр. 194-195, 212-216. Дополнительно рекомендуется обратиться к источнику [16] (стр. 91-93).
    8. Системы с обратной связью. Хорошо описанный теоретический материал с примерами и задачами по данной теме можно найти в источнике [15] в дополнительных материалах ниже. Анализировать нужно стр. 195-196, 216-217. Дополнительно рекомендуется обратиться к источнику [16] (стр. 94-95).
      Видеоролики, которые использовались для лекционной демонстрации систем управления с обратной связью мобильными роботизированными платформами, можно найти на сайте Всероссийского молодежного турнира "Робоштурм" в разделе "Робототехника, теория управления и компьютерное зрение".
    9. Оживляем цифровую обработку сигналов! Этот материал на лекции выноситься не будет. Да и, наверное, рассказывать "online" про то, что описано ниже, было бы глуповато. Ведь этот курс не является кружком "Умелый руки" :) Некоторое время тому назад я решил задуматься над задачкой, которую, наверное, нужно было бы решать классе в седьмом. Но на тот момент времени у меня не было ни знаний, ни денег, ни подходящей элементной базы и, возможно, желания заняться сборкой простенького мобильного робота. Хотя, я с детства мечтал о машинке на пульте управления с привинченной камерой для наблюдения за окружающим пространством. И вот много лет спустя эта мечта сбылась. В настоящей теме я оставлю несколько ссылок и замечаний о том, с чего может начинаться элементарная робототехника и цифровая обработка сигналов. И так, цель состояла в том, чтобы собрать малогабаритного робота, который бы управлялся с использованием оператора по беспроводному каналу связи при использовании собранной своими руками управляющей платы. Для достижения указанной цели решались следующие задачи :) Знакомая фраза, не правда ли? Во-первых, поиск возможных решений (примеры роботов, принципиальных схем и т.п.). Прототипом для создания платформы послужил робот Pololu 3 pi, а для создания управляющей платы - всем известная плата Arduino.  Огромное количество видеороликов про Pololu 3 pi можно найти здесь . Правда, то, что получилось у меня, едва ли на него похоже :) Принципиальные схемы для сборки простейших управляющих плат оказались до боли однотипными. Использовал это (для сборки управляющей части) и это (для сборки схемы драйвера моторов) решения, как самые простые. Управляющая часть - это "мозг" робота, схема драйвера моторов - это промежуточное звено, которое позволяет связать электродвигатели и управляющую схему. Про сборку и прошивку управляющей части можно посмотреть следующие видеоролики тут и тут. Во-вторых, нужно было "раздобыть" элементную базу. "Шопинг" по радиодеталям не заставил себя долго ждать :) В г. Ярославле все необходимые компоненты можно было купить здесь. Я не буду описывать процесс сборки и необходимую элементную базу. Про это вы можете почитать в ссылках, означенных выше. Кратко скажу, что на одной макетной плате я разместил управляющую часть, построенную на базе микроконтроллера  ATMega 328P-PU, и схему драйвера моторов, построенную на базе микросхемы L298N MULTIWATT15. Дополнительно для работы с итоговой платой я купил USB-UART адаптер, который был приобретен в тех же радиодеталях. Последний позволяет взаимодействовать с платой через обычный ПК ("заливать" программный код и т.п.). В-третьих, собрать все вместе. Процесс пайки был долгим, но забавным :) Подробности я упущу. В-четвертых, нужно было разместить управляющую плату на чем-то. Основанием послужил не очень прочный пластик, который был найден в лаборатории и растрескался после первого заезда робота :) Колеса, электродвигатели, повышающий DC-DC преобразователь (для поднятия уровня входного напряжения) были заказаны на сайте amperka.ru. Четыре AAA аккумулятора я купил в ближайшем магазине цифровой техники, а боксы для них снова в "родных" радиодеталях. В-пятых, нужно было собрать все вместе. Здесь опять монтаж, как при создании кинофильма :) Итоговый результат моей работы представлен на рисунке ниже. 
      Как видно из фотографий, поверх управляющей платы расположено большое количество соединительных проводков, которые позволяют связать несколько частей платы воедино (схему питания, модуль беспроводной связи Bluethooth, заказанный на сайте amperka.ru, ультразвуковой дальномер, купленный в радиодеталях, управляющую часть и драйвер моторов). Рядом с каждой из ключевых частей платы напаяны контактные колодки, которые позволяют выполнить необходимые соединения элементов  по соответствующим принципиальным схемам. Дополнительной идеей, которую я преследовал, являлось создание маленького конструктора для школьников, который бы наглядно показывал основные составляющие управляющей платы и позволял их связать воедино самостоятельно. Напоминаю, что "мозгом" описанного робота является микроконтроллер, то есть микросхема, сочетающая в себе функции процессора, ОЗУ и т.п., которая позволяет выполнять цифровую обработку сигналов, поступающих на робота либо с ПК, либо с периферии, например, ультразвукового дальномера. Дополнительно отмечу, что серьезный подход к робототехнике требует не просто создания мобильного робота по чертежам и схемам. Серьезный подход требует создания алгоритмов, которые позволят "наделить" робота искусственным интеллектом. Про то как это делается, можно узнать, например, здесьздесь или здесь. Простенький код, который можно залить на плату через Arduino IDE, позволяющий выполнить удаленное управление роботом через Bluetooth, можно скачать здесь. Как-то так. Не бойтесь реализовать свою мечту и вы обязательно победите! Спасибо за внимание и удачи!
    10. Обработка сигналов в режиме реального времени на ПК. Материал настоящей лекции был рассмотрен в рамках лекции № 5 online курса Prandony, M. Vetterly "Digital Signal Processing" на www.coursera.org.
    Задания для самостоятельного выполнения
    1. Тест № 1 (ссылка). Выполненное задание должно быть сдано не позднее 22.09.2016.
    2. Тест № 2 (ссылка). Выполненное задание должно быть сдано не позднее 20.10.2016. Обращаю внимание на то, что время сдачи теста № 2 сдвинуто на неделю позднее!
    3. Задачи для самостоятельного решения по теме "Дискретное преобразование Фурье. Быстрое преобразование Фурье" (ссылка). Задачи должны быть сданы на проверку в письменном виде не позднее 03.11.2016. При решении задач рекомендуется использовать источник [15] в дополнительных материалах ниже, а также вторую главу задачника Хрящев В.В., Приоров А.Л., Волохов В.А. "Основы теории цепей. Сборник задач" (ссылка). Последний источник можно найти в печатном виде в библиотеке ЯрГУ.
    4. Тест № 3 (ссылка). Выполненное задание должно быть сдано не позднее 10.11.2016Замечание. В задаче № 20 Matlab может выдать такую фразу: Error using imread (line 349). File "cameraman.tif" does not exist. Пугаться не нужно. Фраза означает, что изображение cameraman.tif не существует. Видимо, это зависит от версии пакета. Если такая проблема возникает, то скачайте это изображение здесь. Поместите его в текущую папку Matlab и вызовите в файле image_filtering.m такой командой: I = double(imread('Cameraman256.png'))/255; Удачи!
    5. Тест № 4 (ссылка). Выполненное задание должно быть сдано не позднее 17.11.2016.
    6. Тест № 5 (ссылка). Выполненное задание должно быть сдано не позднее 01.12.2016. При ответе на вопросы теста рекомендуется воспользоваться источниками [2, 15, 16] в дополнительных материалах ниже. Про операцию свертки в частотной и во временной области читаем, например, на стр. 64 источника [15]. Про каскадное и параллельное соединение ЛИС-систем читаем, например, на стр. 294-296 источника [15]. Замечание. При решении разностного уравнения из задачи № 8 во второй части задачи постарайтесь разбить решение на три случая: 1) решение при n < 0. Тут ответ очевиден, y(n) = 0; 2) решение при n = 0. Здесь просто подставляем значение n = 0 в исходное разностное уравнение, учитывая нулевые начальные условия, и считаем y(0); 3) решение при n > 0. Это самый сложный случай! Здесь мы сталкиваемся с неоднородным разностным уравнением вида: y(n) – y(n–1) + 0.25*y(n–2) = (0.5^n)*0.5*u(n–1), где u(n– это единичный скачок, про который можно забыть, помня о том, что n > 0. В правой части стоит неоднородность, которая была получена прямой подстановкой выражения для x(n) в исходное разностное уравнение. Для решения неоднородного уравнения используем источник [2] в дополнительных материалах ниже! Решаем через общее решение однородного и частное решение неоднородного уравнений. При поиске общее решение однородного уравнения учитываем то, что корень характеристического уравнения имеет кратность 2 (см. стр. 4 источника [2], пункт (б), внизу). Полученное решение будет содержать две константы, которые ищутся в самом конце задачи с учетом начальных условий для n > 0. При поиске частного решения неоднородного уравнения используем теорему 1.4 (см. стр. 5 источника [2], внизу). Объединяем общее решение однородного уравнения и частное решение неоднородного уравнения в итоговое решение исходного разностного уравнения путем суммирования. Дальше ищем константы, используя начальные условия. Здесь важное замечание! По условию задачи начальные условия нулевые, то есть y(–1) = y(–2) = 0. Но эти начальные условия использовать нельзя, так как решение разностного уравнения записано для n > 0. Пересчитываем начальные условия через исходного разностное уравнение, которое было задано в самом начале задачи. Получаем пересчитанные начальные условия y(1) = 5/4 и y(2) = 9/8. Для этих начальных условий составляем систему линейных уравнений на константы. Решаем ее любым известным методом, например, прямой подстановкой, Гаусса, Крамера, графически, а для "лентяев" в Matlab (Octave, FreeMat). Пример похожей задачи разбирается на стр. 8-10 источника [2]. Как-то так. Удачи!
    7. Тест № 6 (ссылка). Выполненное задание должно быть сдано не позднее 15.12.2016.
    Темы лабораторных работ
    1. Синтез цифровых КИХ-фильтров методом окон (описание .pdfприложение .pdf, m-файлы .rar).
    2. Синтез цифровых БИХ-фильтров методом билинейного z-преобразования (описание .pdfприложение .pdf, m-файлы .rar). Замечание. При реализации полосового или режекторного фильтра в качестве функции zmapping используйте следующую.
    3. Синтез оптимальных по Чебышёву КИХ-фильтров (описание .pdfприложение .pdf, m-файлы .rarмодель simulink .rar).
    4. Многоскоростная цифровая обработка сигналов (описание .pdf, m-файлы .rar).
    5. Обработка сигналов на основе вейвлет-преобразования (описание .pdf, приложение .pdfm-файлы .rar).
    6. Применение адаптивной фильтрации в обработке цифровых сигналов (описание .pdfm-файлы .rar).
    7. Список опечаток в книге Приоров А.Л., Волохов В.А., Лаврентьев А.М. Основы цифровой обработки сигналов. Лабораторный практикум.  Ярославль: ВУНЦ ВВС «ВВА им. профессора Н.Е. Жуковского и Ю.А. Гагарина» (филиал г. Ярославль), 2012 (список .pdf). Замечание: пожалуйста, в случае нахождения опечаток или неточностей в вышеозначенной книге, сообщите о них мне в комментах здесь или на электронную почту. Заранее спасибо!
    Дополнительные материалы
    1. Список рекомендуемой литературы (список .pdf).
    2. Волохов В.А. Лекция по разностным уравнениям. ЯрГУ, 2010 (описание .djvu).
    3. Хрящев В.В., Приоров А.Л., Волохов В.А. Основы теории цепей. Сборник задач. Глава 4. ЯрГУ, 2008 (описание .pdf).
    4. Волохов В.А. Синтез цифровых КИХ-фильтров методом окон. Сборник задач. ЯрГУ, 2010 (описание .pdf).
    5. Волохов В.А. Синтез цифровых БИХ-фильтров методом билинейного z-преобразования. Сборник задач. ЯрГУ, 2011 (описание .pdf).
    6. Лукин А.С., Крылов А.С. "Интегральные преобразования в обработке изображений, введение в цифровую обработку мультимедийной информации" 2011 (ссылка).
    7. Freeman D. Signal and Systems (6.003), 2010. Massachusetts Institute of Technology (ссылка).
    8. Lustig M. Digital Signal Processing (EE123), 2011. University of California, Berkeley (ссылка).
    9. Lustig M. Digital Signal Processing (EE123), 2012. University of California, Berkeley (ссылка).
    10. Kundur D. Real-Time Digital Signal Processing (ECEN448), 2011. Texas A&M University (ссылка).
    11. Gilbert S. Wavelets, Filter Banks and Application (18.327 / 1.130), 2003. Massachusetts Institute of Technology (ссылка).
    12. Gilbert S. Wavelets, Filter Banks and Application (18.327 / 1.130), 2004. Massachusetts Institute of Technology (ссылка). Примечание: здесь можно найти примеры Matlab-кодов по теме связанной с вейвлетами и вейвлет-преобразованием.
    13. Oppenheim A.V. Signals and Systems (6.007), 2011. Massachusetts Institute of Technology (ссылка).  Примечание: здесь можно найти видеолекции одного из ведущих специалистов в области "Цифровой обработки сигналов" - Алана Оппенгейма.
    14. Грибунин В.Г. Глоссарий по цифровой обработке сигналов (ссылка).
    15. Hayes M.H. Schaum’s Ouline of Theory and Problems of Digital Signal Processing. McGraw-Hill, 1999 (ссылка).
    16. Хрящев В.В., Приоров А.Л., Волохов В.А. "Основы теории цепей. Сборник задач".  Ярославль: ЯрГУ, 2008 (ссылка).
    Замечание: Вопросы, затрагивающие решение задач, описание лабораторного практикума, трудности возникающие при написании программной части лабораторных работ, разбор листинга языка пакета Matlab и т.п., могут быть заданы в комментариях настоящего раздела или присланы по электронной почте.

    Руководитель курса: доц. каф. ДЭС Волохов В.А.