ыс. А. Б. Сергиенко минобрнауки россии санктПетербургский государственный электротехнический университет лэти им. В. И. Ульянова (Ленина) А. В. Петров а. Б. Сергиенко цифровая обработка сигналов лабораторный практикум
![]()
|
Внимание! Русские буквы в именах файлов использовать нельзя! • Отредактируйте код, удалив ненужные строки, возможно, оставшиеся после экспериментов, производившихся в интерактивном режиме. Запустите MATLAB-программу клавишей F5, кнопкой панели инструментов или ко- мандой меню Debug Run. Добейтесь того, чтобы программа работала без ошибок. Справка На данном этапе уже не нужен вывод на экран результатов выполнения каж- дой команды — это было полезно при освоении системы в интерактивном режиме. Чтобы отключить вывод результатов расчета на экран, в конце каж- дой строки кода нужно поставить символ «точка с запятой». 11 Чтобы избежать возможных ошибок из-за повторного определения перемен- ных при очередном запуске программы, добавьте в ее начало команду clear, удаляющую все переменные, содержащиеся в рабочей области Workspace. Последующие пункты работы выполняются путем дополнения создан- ной MATLAB-программы. 4. Построение графика спектра дискретного сигнала. Спектр дис- кретного сигнала рассчитывается по (1.3). При расчете необходимо учесть, что рассматриваемый сигнал содержит конечное число (N) ненулевых отсче- тов. Необходимо рассчитать спектр в основном частотном диапазоне ( ω = −π +π ɶ … ) и построить графики амплитудного и фазового спектров. На примере расчета спектра дискретного сигнала можно познакомиться с выполнением в MATLAB векторно-матричных операций. Примерная по- следовательность выполнения расчета: • Сформируйте вектор-столбец номеров отсчетов k: 0 1 1 N = − k ⋮ Справка Рассмотренный ранее способ создания равномерных последовательностей создает вектор-строку. Превратить строку в столбец можно с помощью опе- рации транспонирования, которая в MATLAB задается символами «.'». Апостроф без точки («'») означает эрмитово сопряжение матрицы (транспо- нирование в сочетании с комплексным сопряжением). Для вещественных матриц обе операции эквивалентны. Следует помнить, что оператор «.'» имеет более высокий приоритет, чем оператор «:», используемый для формирования равномерных последова- тельностей, поэтому для транспонирования строки ее следует взять в скобки: k = (0:N-1).'; • Сформируйте вектор-строку равномерно расположенных частот для расчета спектра. Диапазон частот — от −π до +π, шаг по частоте рекоменду- ется выбирать так, чтобы вектор содержал от 500 до 1000 элементов: 12 [ ] 1 2 M = ω ω ω w ɶ ɶ ɶ … Здесь M — число частот в векторе w. Справка Константа π в MATLAB задается как pi. • Вычислите произведение столбца k и строки w — это даст матрицу размером N × M, содержащую все попарные произведения значений k и ωɶ • Умножьте полученную матрицу на −j, чтобы получить показатель комплексной экспоненты из (1.3). Справка Мнимую единицу в MATLAB можно задать с помощью констант 1i или 1j. После запуска системы значение мнимой единицы также присвоено пере- менным i и j, однако эти значения могут быть переопределены в процессе работы. • Вычислите значения комплексной экспоненты из формулы (1.3). Справка Функции exp, sin, sqrt и т. п. обрабатывают матричные аргументы поэле- ментно. • Умножьте сформированный ранее вектор отсчетов сигнала x на мат- рицу значений комплексных экспонент. Эта операция реализует суммирова- ние по k в формуле (1.3) и в результате дает вектор-строку значений спектра, рассчитанных для M частот из вектора w. • Постройте графики амплитудного и фазового спектров сигнала, раз- местив их друг под другом в одном графическом окне. Зависимости следует строить не от нормированной частоты ωɶ , а от линейной частоты д (2 ) f F = ω π ɶ Справка Для создания нового графического окна служит команда figure. Команда subplot(r, c, n) делит графическое окно на «клетки» (r строк и c столбцов) и делает текущей «клетку» n (нумерация осуществляется по строкам). Последующие команды plot и stem будут выводить графики в текущей «клетке». 13 Чтобы избежать увеличения числа графических окон после каждого запуска программы, добавьте в ее начало команду close all, закрывающую все графические окна. Для получения амплитудного и фазового спектров понадобятся следующие функции: • abs(x) — вычисление модуля, в том числе для комплексных чисел; • angle(x) — вычисление аргумента (фазы) комплексных чисел (в радиа- нах). 5. Восстановление аналогового сигнала по теореме Котельникова. Восстановление аналогового сигнала s(t) с ограниченным спектром по его дискретным отсчетам x(k) в соответствии с теоремой Котельникова произво- дится по формуле (1.5). При расчетах с помощью компьютера значения сигнала s(t) могут быть вычислены для произвольного конечного набора значений времени t. В дан- ной лабораторной работе сигнал s(t) рассчитывается для равномерно сле- дующих значений времени, расположенных в 10 раз чаще, чем было при дис- кретизации сигнала. Для вычисления отдельных слагаемых формулы (1.5) удобно использо- вать матричные возможности MATLAB, рассчитывая эти слагаемые сразу для всех требуемых значений t, при этом для суммирования слагаемых при- дется организовать традиционный цикл. Справка Цикл с заранее заданным числом повторений (цикл for) в MATLAB чаще всего записывается следующим образом: for k = 1:N % тело цикла end В данном случае тело цикла будет выполнено N раз, для целочисленных зна- чений переменной k, меняющихся от единицы до N. • Сформируйте вектор моментов времени для расчета восстановленного сигнала по (1.5). Шаг по времени должен быть в 10 раз меньше исходного интервала дискретизации. Охватываемый диапазон времени должен выхо- дить за края сигнала как минимум на 5 исходных интервалов дискретизации (это необходимо для того, чтобы увидеть на графике затухающие «хвосты» функций sin(x)/x). 14 • Сформируйте заполненную нулями «заготовку» для вектора значений восстановленного сигнала s(t). Длина этого вектора должна совпадать с дли- ной созданного на предыдущем шаге вектора моментов времени. Справка Функция zeros(m, n) возвращает заполненную нулями матрицу с m стро- ками и n столбцами. Функция length(x) возвращает длину вектора x. • Реализуйте вычисление суммы по k в (1.5), использовав для этого цикл по отсчетам сигнала. В теле цикла к созданной ранее «заготовке» для сигнала должно прибавляться очередное слагаемое формулы (1.5). Справка Поскольку слагаемые формулы (1.5) рассчитываются сразу для всех момен- тов времени t, числитель и знаменатель функции sin(x)/x являются вектора- ми, и их деление друг на друга должно выполняться поэлементно. По умол- чанию MATLAB выполняет операции умножения и деления по матричным правилам. Чтобы осуществить поэлементные действия с матрицами, перед знаком операции необходимо поставить точку: «.*», «./». • Выведите график восстановленного сигнала с помощью функции plot. Разрывы на графике вызваны неопределенностями (0/0) при расчете функции sin(x)/x с нулевым аргументом. Справка Избавиться от этих разрывов можно, использовав для расчета функции sin(x)/x готовые средства MATLAB. Функция sinc возвращает результат, равный sin(πx)/(πx) (именно так определяется функция sinc в зарубежных ис- точниках). • Постройте графики исходного дискретного и восстановленного анало- гового сигналов в общих координатных осях, чтобы наглядно видеть, как они соотносятся друг с другом. Справка Команды hold on и hold off включают и выключают режим сохранения текущего содержимого окна при построении нового графика. Для управления цветом графиков можно добавлять к командам plot и stem дополнительные строковые параметры, например, plot(x, y, 'r') задает вывод графика красным цветом. 15 6. Подготовка материалов для отчета. В завершение работы необхо- димо скопировать в документ Microsoft Word (в качестве заготовки для отче- та) созданный программный код и все полученные графики (дискретный сиг- нал; его амплитудный и фазовый спектры; совместно показанные дискрет- ный и восстановленный аналоговый сигналы). Справка Для переноса графиков в документы Word следует использовать команду Copy Figure из меню Edit окна графика. Перед этим целесообразно задать векторный формат копирования, выбрав в том же меню команду Copy Op- tions и установив переключатели Preserve Information и Transparent Back- ground. 1.5. Содержание отчета Отчет должен содержать созданный в процессе работы программный код, оформленный в виде законченного документа (с заголовками разделов, формулами и комментариями к коду). Полученные в ходе работы графики с подписями осей и размерностями размещаются в соответствующих разде- лах отчета. В конце отчета должны быть приведены выводы по результатам работы. 1.6. Контрольные вопросы 1. Частоту дискретизации сигнала увеличили в 2 раза. Как изменится амплитуда выбросов аналогового сигнала, восстановленного согласно теоре- ме Котельникова? 2. У отсчетов сигнала с четными номерами изменили знак, т. е. сфор- мировали последовательность y(k) = −x(k) (−1) k . Как при этом изменился спектр дискретного сигнала? (Необходимо выразить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 3. Построенный в отчете график амплитудного спектра дискретного сигнала имеет выраженный пик на некоторой ненулевой частоте. Приведя необходимые графики, продемонстрируйте, что сигнал действительно имеет сходство с гармоническим колебанием соответствующей частоты. 4. Последовательность отсчетов дискретного сигнала конечной дли- тельности зеркально перевернули во времени, т. е. сформировали последова- тельность { ( )} { ( 1), ( 2), , (2), (1), (0)} y k x N x N x x x = − − … , 0 1 k N ≤ ≤ − , 16 общая формула: ( ) ( 1 ) y k x N k = − − , 0 1 k N ≤ ≤ − . Здесь N — число отсчетов сигнала. Как при этом изменился спектр дискрет- ного сигнала? (Необходимо выразить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 5. Спектр ( ) X ω ɺ ɶ некоторой дискретной последовательности {x(k)} пре- образовали следующим образом: ( ) (2 ) Y X ω = ω ɺ ɺ ɶ ɶ . Что представляет собой по- следовательность отсчетов {y(k)}? (Как она связана с последовательностью {x(k)}?) 6. Последовательность отсчетов дискретного сигнала бесконечной дли- тельности инвертировали во времени, т. е. сформировали последовательность y(k) = x(−k). Как при этом изменился спектр дискретного сигнала? (Необхо- димо выразить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 7. Амплитуда пульсаций аналогового сигнала, восстановленного со- гласно теореме Котельникова, возрастает как вблизи скачков, так и вблизи точек излома сигнала, однако в окрестностях скачков это возрастание оказы- вается существенно сильнее. Как это можно объяснить? 8. Дискретный сигнал подвергли амплитудной модуляции, т. е. сфор- мировали последовательность 0 ( ) ( ) cos( ) y k x k k = ωɶ , где 0 ωɶ — некоторая не- сущая частота. Как при этом изменился спектр дискретного сигнала? (Необ- ходимо выразить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 9. У отсчетов сигнала с нечетными номерами изменили знак, после че- го между всеми парами соседних отсчетов вставили по одному отсчету с ну- левым значением, т. е. сформировали последовательность следующего вида: 2 ( 2)( 1) , четное, ( ) 0, нечетное. k x k k y k k − = Как при этом изменился спектр дискретного сигнала? (Необходимо вы- разить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 10. Дискретный сигнал подвергли амплитудной модуляции, т. е. сфор- мировали последовательность 0 ( ) ( )sin( ) y k x k k = ω ɶ , где 0 ω ɶ — некоторая не- сущая частота. Как при этом изменился спектр дискретного сигнала? (Необ- ходимо выразить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 17 11. В бесконечном дискретном сигнале каждый отсчет продублировали: {y(k)} = {…, x(−1), x(−1), x(0), x(0), x(1), x(1), x(2), x(2), …}. Как при этом изменился спектр дискретного сигнала? (Необходимо вы- разить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 12. По отсчетам бесконечного дискретного гармонического сигнала 0 ( ) cos( ) x k A k = ω + ϕ ɶ , −∞ < k < +∞, восстановили аналоговый сигнал в соот- ветствии с теоремой Котельникова. Будет ли восстановленный сигнал яв- ляться гармоническим? Ответ обосновать. 13. Последовательность отсчетов дискретного сигнала бесконечной дли- тельности сложили с этой же последовательностью, инвертированной во вре- мени, т. е. сформировали последовательность y(k) = x(k) + x(−k). Как при этом изменился спектр дискретного сигнала? (Необходимо выразить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 14. Из последовательности отсчетов дискретного сигнала бесконечной длительности вычли эту же последовательность, инвертированную во време- ни, т. е. сформировали последовательность y(k) = x(k) − x(−k). Как при этом изменился спектр дискретного сигнала? (Необходимо выразить ( ) Y ω ɺ ɶ через ( ) X ω ɺ ɶ .) 18 2. ДИСКРЕТНЫЕ ФИЛЬТРЫ 2.1. Цели работы • Пропускание дискретного сигнала через дискретный фильтр и полу- чение графика выходного сигнала. • Анализ сигналов, проходящих через элементы памяти фильтра, при реализации фильтра в разных формах. • Получение графиков характеристик фильтра с помощью среды визуа- лизации фильтров FVTool. • Разложение функции передачи фильтра на простые дроби и получение аналитической формулы для импульсной характеристики фильтра. 2.2. Теоретические сведения Алгоритм дискретной фильтрации. Дискретный фильтр — это произ- вольная система обработки дискретного сигнала, обладающая свойствами линейности и стационарности. Линейность означает, что выходная реакция на сумму сигналов равна сумме реакций на эти сигналы, поданные на вход по отдельности, а стационарность — что задержка входного сигнала приводит лишь к такой же задержке выходного сигнала, не меняя его формы. Любой фильтр обладает определенной частотной характеристикой. Что- бы она была нетривиальной, т. е. чтобы коэффициент передачи фильтра на разных частотах был разным, выходной сигнал фильтра y(k) должен зависеть от нескольких отсчетов входного сигнала x(k). Таким образом, дискретный фильтр должен обладать памятью. Чтобы обеспечить линейность и стацио- нарность, производимые фильтром математические операции должны огра- ничиваться сложением и умножением на константы. В общем случае дискретный фильтр суммирует (с весовыми коэффици- ентами) некоторое количество входных отсчетов (включая текущий) и неко- торое количество предыдущих выходных отсчетов: 0 1 1 2 ( ) ( ) ( 1) ( ) ( 1) ( 2) ( ), m n y k b x k b x k b x k m a y k a y k a y k n = + − + + − − − − − − − − − … … (2.1) где j a и i b — вещественные коэффициенты. Данная формула называется ал- горитмом дискретной фильтрации. 19 Способы описания дискретных систем. Дискретные системы могут описываться различными способами, которые рассмотрены далее. Импульсная характеристика. Выходная реакция на единичный им- пульс ( ) k δ , определяемая при нулевых начальных условиях, называется им- пульсной характеристикой дискретной системы и обозначается h ( k ). Знание импульсной характеристики позволяет проанализировать прохо- ждение через дискретную систему любого сигнала. Выходной сигнал пред- ставляет собой линейную комбинацию импульсных характеристик: ( ) ( ) ( ) m y k x m h k m ∞ =−∞ = − ∑ Данная формула представляет собой свертку входного сигнала и им- пульсной характеристики фильтра. Функция передачи. Функция H ( z ), равная отношению z -преобразований выходного и входного сигналов и представляющая собой z -преобразование импульсной характеристики системы, называется функцией передачи или системной функцией дискретной системы: 1 2 0 1 2 1 2 0 1 2 ( ) ( ) ( ) ( ) 1 m k m n k n b b z b z b z Y z H z h k z X z a z a z a z − − − ∞ − − − − = + + + + = = = + + + + ∑ … … |