Лабораторная работа №1 Работа в среде Matlab. Структура Signal Processing Toolbox. Генерация сигналов. Свертка Цель работы: Получить основные навыки работы в среде Matlab. Изучить возможности пакета Signal Processing Toolbox по генерации сигналов. Изучить свойства свертки Теоретическое введение 1. Общая характеристика пакета Signal Processing [1] Signal Processing Toolbox - мощный пакет по анализу, моделированию и проектированию устройств обработки всевозможных сигналов, обеспечению их фильтрации и множества преобразований. Пакет Signal Processing обеспечивает чрезвычайно обширные возможности по созданию программ обработки сигналов для современных научных и технических приложений. В пакете используется разнообразная техника фильтрации и новейшие алгоритмы спектрального анализа. Пакет содержит модули для разработки новых алгоритмов обработки сигналов, разработки линейных систем и анализа временных рядов. Пакет будет полезен, в частности, в таких областях, как обработка аудио- и видеоинформации, телекоммуникации, геофизика, задачи управления в реальном режиме времени, экономика, финансы и медицина. Назначение пакета: Моделирование сигналов и линейных систем; Проектирование, анализ и реализация цифровых и аналоговых фильтров; Быстрое преобразование Фурье, дискретное косинусное и другие преобразования; Оценка спектров и статистическая обработка сигналов; Параметрическая обработка временных рядов; Генерация сигналов различной формы; Оконное отображение. Пакет Signal Processing - идеальная оболочка для анализа и обработки сигналов. В нем используются проверенные практикой алгоритмы, выбранные по критериям максимальной эффективности и надежности. Пакет содержит широкий спектр алгоритмов для представления сигналов и линейных моделей. Этот набор позволяет пользователю достаточно гибко подходить к созданию сценария обработки сигналов. Пакет включает алгоритмы для преобразования модели из одного представления в другое. Пакет Signal Processing включает полный набор методов для создания цифровых фильтров с разнообразными характеристиками. Он позволяет быстро разрабатывать фильтры высоких и низких частот, полосовые пропускающие и задерживающие фильтры, многополосные фильтры, в том числе фильтры Чебышева, Юла-Уолкера, эллиптические и другие фильтры. Графический интерфейс позволяет проектировать фильтры, задавая требования к ним в режиме переноса объектов мышью. В пакет включены следующие новые методы проектирования фильтров: Обобщенный метод Чебышева для создания фильтров с нелинейной фазовой характеристикой, комплексными коэффициентами или произвольным откликом. Алгоритм разработан Макленаном и Карамом в 1995 году; Метод наименьших квадратов с ограничениями позволяет пользователю явно контролировать максимальную ошибку (сглаживание); Метод расчета минимального порядка фильтра с окном Кайзера; Обобщенный метод Баттерворта для проектирования низкочастотных фильтров с максимально однородными полосами пропускания и затухания. Основанный на оптимальном алгоритме быстрого преобразования Фурье, пакет Signal Processing обладает непревзойденными характеристиками для частотного анализа и спектральных оценок. Пакет включает функции для вычисления дискретного преобразования Фурье, дискретного косинусного преобразования, преобразования Гильберта и других преобразований, часто применяемых для анализа, кодирования и фильтрации. В пакете реализованы такие методы спектрального анализа, как метод Вельха, метод максимальной энтропии и другие. Пакет Signal Processing является основой для решения многих других задач. Например, комбинируя его с пакетом Image Processing, можно обрабатывать и анализировать двухмерные сигналы и изображения. В паре с пакетом System Identification пакет Signal Processing позволяет выполнять параметрическое моделирование систем во временной области. В сочетании с пакетами Neural Network и Fuzzy Logic может быть создано множество средств для обработки данных или выделения классификационных характеристик. Средство генерации сигналов позволяет создавать импульсные сигналы различной формы. 2. Генерация сигналов в пакете Signal Processing Сигналом будем называть данные, упорядоченные относительно некоторого аргумента (например, времени, частоты, пространственной координаты). Если в качестве аргумента выбрано время, то эквивалентными понятиями будут временной процесс, временная реализация. Для генерации сигналов используются функции среды Matlab, в том числе функции пакета Signal Processing. В пакете Signal Processing реализованы следующие функции генерации сигналов: Функция Действие
chirp Генерирует косинусоиду с переменной частотой
Подробное описание функций и их параметров можно получить из справочной системы Matlab или используя команду help <имя функции>. Рассмотрим примеры генерации сигналов. 1. Требуется получить сигнал синусоидальный сигнал с заданной частотой f=0,2 Гц и различными частотами дискретизации fд=1 Гц, 3 Гц, 10 Гц. Длина сигнала 20 с. Т.к. работа среды Matlab ориентирована на матричное представление сигналов, то зададим сначала три вектора времени t, которые будет соответствовать различным частотам снятия данных (частотам дискретизации). >> fs1=1; fs2=3; fs3=10; >> T=20; f=0.2; >> t1=0:1/fs1:T; >> t2=0:1/fs2:T; >> t3=0:1/fs3:T;
%fs – sampling frequency – частота дискретизации % T – длина сигнала ; f- частота сигнала
Для генерации синусоидального сигнала (вычисления функции sin в заданных вектором ti точках используется функция Matlab – sin. Уточним, требуемые данной функцией, аргументы: >> help sin SIN Sine. SIN(X) is the sine of the elements of X Overloaded methods help sym/sin.m
Далее зададим вектор сигналов: >> y1=sin(f*t1); >> y2=sin(f*t2); >> y3=sin(f*t3);
Для визуализации сигналов воспользуемся функцией plot: >> plot(t1,y1,'-ro',t2,y2,'-g>',t3,y3,'-b') >> grid on >> xlabel('Time'); >> ylabel('Amplitude'); >> title('SIGNAL');
% Отображение сетки % Подпись оси X % Подпись оси Y % Заголовок рисунка
Результат работы изображен на рис.1
Рис.1
Все вышеизложенные операции могут быть оформлены в виде m-файла в редакторе m-файлов (рис 2).
Рис.2
2. Требуется получить функцию MATLAB генерирующую сигнал длительностью 10 с, снятый с шагом 1/f и представляющий собой
параметр f есть аргумент функции. Функция объявляется зарезервированным словом function, после которого следует выражение [выходное_значение_функции] = имя_функции[(аргументы_функции)] Один возможных вариантов решения данной задачи приведен ниже function A = example1_2(f) t=0:1/f:10; t1=0:1/f:3; A(1:length(t1))=sin(7*pi*t1); t2=(3+1/f):1/f:6; A(length(t1)+1:length(t1)+length(t2))=2+sin(7*pi*t2); t3=(6+1/f):1/f:10; A((length(t1)+length(t2)+1):(length(t1)+length(t2)+length(t3)))=sin(2*pi*t3); plot(t,A); grid on;
Данная функция может быть вызвана из других функций или запущена из Command Window: >> example1_2(128); Результат выполнения функции приведен ниже
Рис. 3
3. Свертка Свертка играет очень важную роль в теории ЦОС (см лекции). Дискретной сверткой двух сигналов g и h называют одномерный массив
Ниже приведена иллюстрация процесса вычисления свертки.
Рис.4
В среде MATLAB свертка реализуется следующей функцией conv(А,B). В результате получается вектор длиной LENGTH(A)+LENGTH(B)-1.
Задание для самостоятельной работы Задание к лабораторной работе №1 N = номер варианта Описание сигнала
Параметры
A B C D ШАГ
Гармонический сигнал с частотой A с нормально распределенным шумом (randn) Для четных и нечетных вариантов N*10 Гц
1/(5*N)
Гармонический сигнал, частота которого меняется по закону At^3+Bt^2+Ct+D Для четных вариантов 2*N 5 3*N 1 1/1024
Для нечетных вариантов 1 3*N 5 10*N 1/1024
Синусоида с меняющейся частотой от A до B по законам С и D Для четных вариантов 5*(N+5) 100*N линейный квадр. 1/1024
Для нечетных вариантов 2*N 120-N линейный Exp 1/1024
Синусоида с частотой меняющейся скачкообразно: первая частота А, далее B, C и D Для четных вариантов 10*N 20-N 30+2*N 70-3*N 1/1024
Для нечетных вариантов 100 20*N 10*N 20+N^2 1/1024
2. Написать программу, вычисляющую свертку двух сигналов, оформить ее в виде функции Z=myCONV(A,B). Сравнить результаты работы программы с функцией conv(A,B). 3. Для сигналов найти свертки (используя совою программу) в соответствии с заданием. Объяснить полученные результаты аналитически. A={…0,1,1,1,1,1,0,…} B={…,0,1,2,3,0,…} C={…,0,2,1,0.5,0,…} D={…,0,1,2,3,4,5,0,…} E={…,0,5,4,5,3,1,0,…} F=sin(2*pi*t)+0.1*randn(1,length(t)); t=0:1/125:10; G={…,0,2,1,2,0,…} A*A B*C; C*B (D*E)*B; D*(E*B) D*(E+B); D*E+D*B F*A F*G
Требования к отчету Отчет должен содержать следующие разделы: Титульный лист; Цели работы; Описание сигналов, коды программ, визуальное представление сигнала. Отчет может быть выполнен с использованием текстовых редакторов MS Word или LaTeX. Контрольные вопросы Какие свойства свертки использовались в лабораторной работе? Роль свертки в ЦОС. В чем отличие дискретной свертки от непрерывной? Как представить дискретный сигнал с использованием свертки и дельта-функции. Литература Абраменова И.В., Дьяконов В.П., Круглов В.В. Matlab 5.3.1 с пакетами расширений. Под ред. проф. В.П. Дьяконова. – М.: Нолидж, 2001. – 880 с. Дьяконов В. Matlab. Обработка сигналов и изображений. Специальный справочник. – СПб.: Питер, 2002. – 608 с.