А. И. Солонина Ñ. Ì. Арбузов Рекомендовано УМО по образованию в области телекоммуникаций в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки дипломированных специалистов 210400 "Телекоммуникации" Санкт-Петербург «БХВ-Петербург» 2008

Стр.1

УДК 681.3.06 (075.8) ББК 32.973(я73) С60 Солонина, А. И. С60 Цифровая обработка сигналов. Моделирование в MATLAB / А. И. Солонина, С. М. Арбузов. - СПб.: БХВ-Петербург, 2008. - 816 с.: ил. - (Учебное пособие) ISBN 978-5-9775-0259-7 Рассматриваются базовые методы и алгоритмы цифровой обработки сигналов (ЦОС) и их компьютерное моделирование с помощью системы MATLAB. Излагаются основные режимы работы системы MATLAB, матричные вычисления, стандартные численные методы и формирование графиков. Подробно рассматривается специфика представления сигналов и систем ЦОС на языке MATLAB, описываются линейные дискретные системы, синтез КИХ- и БИХ-фильтров, адаптивная цифровая фильтрация, квантование, вейвлеты и моделирование этих объектов и процессов ЦОС программными средствами MATLAB, а также ряд графических программ, входящих в пакет расширений MATLAB и предназначенных для решения задач ЦОС с помощью пользовательского графического интерфейса без прямого доступа к программным средствам MATLAB. Для студентов и преподавателей вузов, а также специалистов по цифровой обработке сигналов Рецензенты: М. С. Куприянов, д. т. н., профессор Санкт-Петербургского государственного электротехнического университета "ЛЭТИ" В. А. Варгаузин, к. т. н., доцент Санкт-Петербургского государственного политехнического университета УДК 681.3.06(075.8) ББК 32.973(я73) Группа подготовки издания: Главный редактор Зам. главного редактора Зав. редакцией Редактор Компьютерная верстка Корректор Дизайн серии Оформление обложки Зав. производством Екатерина Кондукова Татьяна Лапина Григорий Добин Нина Седых Натальи Смирновой Виктория Пиотровская Игоря Цырульникова Елены Беляевой Николай Тверских Лицензия ИД ¹ 02429 от 24.07.00. Подписано в печать 30.05.08. Формат 70×1001/16. Печать îôñåòíàÿ. Óñë. ïå÷. ë. 65,78. Тираж 1500 ýêç. Заказ ¹ "ÁÕÂ-Ïåòåðáóðã", 194354, Ñàíêò-Ïåòåðáóðã, óë. Åñåíèíà, 5Á. Санитарно-эпидемиологическое заключение на продукцию ¹ 77.99.60.953.Ä.002108.02.07 от 28.02.2007 ã. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека. Отпечатано с готовых диапозитивов в ГУП "Типография "Наука" 199034, Ñàíêò-Ïåòåðáóðã, 9 ëèíèÿ, 12 ISBN 978-5-9775-0259-7 © Солонина А. И., Арбузов С. М., 2008 © Оформление, издательство "БХВ-Петербург", 2008

Стр.2

Оглавление ПРЕДИСЛОВИЕ...............................................................................................................1 СПИСОК СОКРАЩЕНИЙ НА РУССКОМ ЯЗЫКЕ.............................................................3 СПИСОК СОКРАЩЕНИЙ НА АНГЛИЙСКОМ ЯЗЫКЕ.....................................................5 ЧАСТЬ I. ВВЕДЕНИЕ В MATLAB ..........................................................................7 ГЛАВА 1. ЗНАКОМСТВО С СИСТЕМОЙ MATLAB.....................................................9 1.1. Принятые обозначения.....................................................................................10 1.2. Установка и запуск MATLAB .........................................................................11 1.3. Интерфейс MATLAB........................................................................................13 1.4. Система помощи MATLAB.............................................................................16 ГЛАВА 2. РЕЖИМ ПРЯМЫХ ВЫЧИСЛЕНИЙ..............................................................24 2.1. Команды............................................................................................................25 2.2. Операторы: оператор присваивания...............................................................26 2.3. Константы..........................................................................................................27 2.4. Переменные.......................................................................................................34 2.5. Функции.............................................................................................................37 2.6. Выражения.........................................................................................................43 2.7. Символы и функции операций........................................................................44 2.8. Рабочая область памяти Workspace: команды who, whos, clear ...................51 2.9. Сохранение данных на диске: команды save, load ........................................53 2.10. Создание собственной папки и сохранение пути к ней..............................53

Стр.3

IV Оглавление ГЛАВА 3. МАТРИЧНАЯ ЛАБОРАТОРИЯ.....................................................................55 3.1. Элементы матриц и обращение к ним............................................................56 3.2. Длина вектора и размер матрицы: функции length, size................................58 3.3. Функции генерации типовых матриц.............................................................58 3.4. Формирование векторов и подматриц из матрицы.......................................61 3.5. Конкатенация подматриц и векторов в матрицы..........................................63 3.6. Копирование матриц: функция repmat ...........................................................64 3.7. Поэлементные операции с матрицами............................................................65 3.8. Операции с матрицами в задачах линейной алгебры....................................66 3.9. Операции с матрицами в задачах математической статистики: функции max, min, sort, sum, prod, cumsum, diff, mean, std, var, cov, corrcoef ............................................................................................................103 ГЛАВА 4. ТИПЫ МАССИВОВ....................................................................................111 4.1. Числовые массивы..........................................................................................111 4.2. Нечисловые массивы......................................................................................114 4.3. Определение типа данных: функция class....................................................124 ГЛАВА 5. ГРАФИКА..................................................................................................127 5.1. Двумерная графика: команды figure, hold on, hold off; функция subplot......................................................................................................127 5.2. Оформление графиков: команда grid, функции title, xlabel, ylabel, gtext, legend, xlim, ylim ...........................................................................................129 5.3. Двумерные графики: функции plot, loglog, semilogx, semilogy, logspace, fplot..........................................................................................................130 5.4. Управление свойствами графиков................................................................135 5.5. Специальные двумерные графики: функции stem, stairs, polar, compass, bar, pie, hist .............................................................................................139 5.6. Трехмерная графика.......................................................................................145 5.7. Формирование сетки на плоскости XOY: функция meshgrid......................145 5.8. Трехмерные графики: функции plot3, mesh, meshc, meshz, surf, surfl, surfc, contour3................................................................................................146 5.9. Управление свойствами трехмерных графиков: функция colormap; команды shading interp, colorbar ..........................................................................150 ГЛАВА 6. ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ ТИПОВЫХ ЗАДАЧ............................153 6.1. Операции с многочленами.............................................................................153 6.2. Корни уравнения: функция fzero ...................................................................159

Стр.4

Оглавление V 6.3. Аппроксимация и интерполяция...................................................................161 6.4. Минимизация функций: функции fminbnd, fminsearch ...............................169 6.5. Численное интегрирование: функции trapz, cumtrapz, quad, quad1, dblquad ........................................................................................................172 6.6. Численное интегрирование обыкновенных дифференциальных уравнений...............................................................................................................174 ГЛАВА 7. РЕЖИМ ПРОГРАММИРОВАНИЯ...............................................................187 7.1. Программы пользователя - M-файлы.........................................................188 7.2. Структура function-файлов: функции nargin, nargout; команды type, global; оператор return...........................................................................................188 7.3. Структура script-файлов: команды echo on, echo off....................................192 7.4. Разработка программ в MATLAB.................................................................194 7.5. Работа с M-файлами.......................................................................................208 ЧАСТЬ II. МОДЕЛИРОВАНИЕ ЦОС ПРОГРАММНЫМИ СРЕДСТВАМИ MATLAB.....................................................................................217 ГЛАВА 8. ДИСКРЕТНЫЕ СИГНАЛЫ.........................................................................219 8.1. Представление последовательностей...........................................................220 8.2. Случайные последовательности: функции rand, randn, xcorr, xcov...........244 ГЛАВА 9. ЛИНЕЙНЫЕ ДИСКРЕТНЫЕ СИСТЕМЫ....................................................257 9.1. Моделирование линейных дискретных систем во временной области....257 9.2. Моделирование линейных дискретных систем в z-области.......................285 9.3. Моделирование линейных дискретных систем в частотной области........302 ГЛАВА 10. СТРУКТУРЫ ЛИНЕЙНЫХ ДИСКРЕТНЫХ СИСТЕМ...............................313 10.1. Разновидности структур КИХ- и БИХ-систем...........................................313 10.2. Описание структур КИХ- и БИХ-систем в виде объектов dfilt................318 10.3. Функции MATLAB для объектов dfilt ........................................................325 10.4. Расстановка звеньев и масштабирование в объектах dfilt: функции sos, scale ..................................................................................................332 ГЛАВА 11. ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ............................................339 11.1. Вычисление ДПФ: функции fft, ifft, fftshift; внешние функции fft_e1, fft_e2 ........................................................................................................................342

Стр.5

VI Оглавление 11.2. Вычисление свертки с помощью ДПФ: функция fftfilf; внешняя функция iir_iir ........................................................................................................356 11.3. Вычисление свертки с секционированием: функция fftfilt .......................363 ГЛАВА 12. ОБРАБОТКА СЛУЧАЙНЫХ СИГНАЛОВ ЛИНЕЙНЫМИ ДИСКРЕТНЫМИ СИСТЕМАМИ...................................................................................367 12.1. Формирование случайных сигналов с заданным законом распределения вероятностей................................................................................367 12.2. Формирование случайных сигналов с заданной корреляционной функцией.................................................................................................................370 12.3. Непараметрические методы спектрального анализа: функции wvtool, psd ...............................................................................................371 12.4. Линейное предсказание: функция lpc .........................................................381 12.5. Параметрические методы спектрального анализа: функции pcov, arcov, pmcov, armcov, pburg, arburg, pyulear, aryule .................387 ГЛАВА 13. СИНТЕЗ КИХ-ФИЛЬТРОВ.....................................................................391 13.1. Цифровые фильтры......................................................................................391 13.2. Свойства КИХ-фильтров.............................................................................393 13.3. Задание требований к частотным характеристикам КИХ-фильтров.......395 13.4. Синтез КИХ-фильтров методом окон: функции fir1, kaiserord; внешние функции check_low, check_high, check_pass, check_stop, plot_fir.......400 13.5. Синтез КИХ-фильтров методом наилучшей равномерной (чебышевской) аппроксимации: функции firpm, firpmord, firgr; внешняя функция MAG_fir....................................................................................417 13.6. Цифровой преобразователь Гильберта.......................................................442 13.7. Цифровой дифференциатор.........................................................................449 13.8. Приведенная структура КИХ-фильтра: описание в виде объекта dfilt.............................................................................................................453 13.9. Анализ характеристик цифрового фильтра: функция fvtool.....................456 ГЛАВА 14. СИНТЕЗ БИХ-ФИЛЬТРОВ.....................................................................457 14.1. Свойства БИХ-фильтров..............................................................................457 14.2. Задание требований к частотным характеристикам БИХ-фильтров и процедура синтеза...............................................................................................458 14.3. Синтез аналоговых фильтров: функции butter, cheby1, cheby2, ellip, buttord, cheb1ord, cheb2ord, ellipord, freqs...........................................................460 14.4. Синтез БИХ-фильтров методом инвариантности импульсной характеристики: функции impinvar, impulse........................................................463

Стр.6

Оглавление VII 14.5. Синтез БИХ-фильтров методом билинейного Z-преобразования: функции bilinear, butter, cheby1, cheby2, ellip, buttord, cheb1ord, cheb2ord, ellipord....................................................................................................469 14.6. Структура БИХ-фильтра: описание в виде объекта dfilt...........................480 14.7. Описание требований к АЧХ КИХ- и БИХ-фильтров в виде объектов fdesign .....................................................................................................481 14.8. Синтез КИХ- и БИХ-фильтров в виде объектов dfilt на основе объектов fdesign .....................................................................................................486 ГЛАВА 15. АДАПТИВНАЯ ЦИФРОВАЯ ФИЛЬТРАЦИЯ.............................................493 15.1. Применение принципов адаптации в системах ЦОС................................493 15.2. Адаптивный алгоритм LMS: функции lms и nlms для объектов adaptfilt....................................................................................................................499 15.3. Адаптивный алгоритм RLS: функция rls для объекта adaptfilt ................504 ГЛАВА 16. КВАНТОВАНИЕ В СИСТЕМАХ ЦОС С ФИКСИРОВАННОЙ ТОЧКОЙ...513 16.1. Эффекты квантования в структуре цифрового фильтра...........................515 16.2. Моделирование структуры цифрового фильтра с фиксированной точкой......................................................................................................................542 16.3. Анализ характеристик КИХ- и БИХ-фильтров с ФТ................................566 16.4. Моделирование квантования в АЦП..........................................................581 16.5. Вычисление реакции КИХ- и БИХ-фильтров с ФТ: функция filter .........601 ГЛАВА 17. МНОГОСКОРОСТНЫЕ СИСТЕМЫ ЦОС...............................................618 17.1. Однократные системы интерполяции.........................................................619 17.2. Моделирование однократной интерполяции в MATLAB: функции interp, upfirdn ..........................................................................................624 17.3. Однократные системы децимации..............................................................629 17.4. Моделирование однократной децимации в MATLAB: функции decimate, upfirdn .....................................................................................635 17.5. Системы однократной передискретизации................................................638 17.6. Моделирование однократной передискретизации в MATLAB: функции resample, upfirdn.....................................................................................639 17.7. Описание полифазной структуры систем интерполяции и децимации в виде объектов mfilt.......................................................................642 ГЛАВА 18. ВЕЙВЛЕТ-ОБРАБОТКА СИГНАЛОВ.......................................................651 18.1. Основные понятия вейвлет-анализа............................................................652 18.2. Вейвлеты в системе MATLAB: функции wavemngr, waveinfo, wavefun, centfrq ......................................................................................................................655

Стр.7

VIII Оглавление 18.3. Непрерывное вейвлет-преобразование: функция cwt ...............................667 18.4. Масштабирующие фильтры: функции dbwavf, symwavf, coifwavf, biorwavf, rbiowavf...................................................................................................671 18.5. Фильтры разложения и восстановления: функции orthfilt, wfilters, qmf, dwt, iwdt...........................................................................................................672 18.6. Многоуровневый вейвлет-анализ: функции wavedec, waverec, appcoef, detcoef, swt, iswt .......................................................................................680 18.7. Вейвлет-пакеты: функции wpdec, wpcoef, wprec, wentropy, besttree ........684 ГЛАВА 19. ВЗАИМОДЕЙСТВИЕ С ВНЕШНИМИ ИСТОЧНИКАМИ СИГНАЛОВ........690 19.1. Форматы данных, совместимые со средствами анализа сигналов в MATLAB..............................................................................................................690 19.2. Использование готовых сигналов: функция wnoise ..................................692 19.3. Импорт внешних файлов: функция wavread..............................................697 19.4. Воспроизведение звука: функции sound, soundsc, wavplay.......................700 19.5. Запись звуковых файлов: функции wavrecord, wavwrite...........................702 ЧАСТЬ III. МОДЕЛИРОВАНИЕ ЦОС СРЕДСТВАМИ GUI.................................705 ГЛАВА 20. ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ ФИЛЬТРОВ СРЕДСТВАМИ GUI FDATOOL...........................................................................................................707 20.1. Синтез цифровых фильтров.........................................................................708 20.2. Входные параметры цифровых фильтров..................................................710 20.3. Примеры синтеза цифровых фильтров.......................................................715 20.4. Выбор структуры цифрового фильтра........................................................721 20.5. Анализ цифровых фильтров........................................................................722 20.6. Синтез цифровых преобразователей Гильберта........................................724 20.7. Синтез цифровых дифференциаторов........................................................726 20.8. Сохранение цифровых фильтров на время сеанса в GUI FDATool.........728 20.9. Экспорт цифровых фильтров как объектов dfilt ........................................729 20.10. Импорт цифровых фильтров как объектов dfilt.......................................732 20.11. Моделирование структуры цифровых фильтров с фиксированной точкой.......................................................................................733 ГЛАВА 21. МОДЕЛИРОВАНИЕ ЦИФРОВОЙ ФИЛЬТРАЦИИ СРЕДСТВАМИ GUI SPTOOL ..............................................................................................................742 21.1. Синтез цифровых фильтров.........................................................................743 21.2. Входные параметры цифровых фильтров..................................................747

Стр.8

Оглавление IX 21.3. Примеры синтеза цифровых фильтров.......................................................750 21.4. Анализ цифровых фильтров........................................................................755 21.5. Импорт входного сигнала............................................................................756 21.6. Моделирование цифровой фильтрации......................................................760 21.7. Анализ сигналов во временной области.....................................................761 21.8. Анализ сигналов в частотной области........................................................763 21.9. Экспорт данных из GUI SPTool ..................................................................766 21.10. Выход из GUI SPTool.................................................................................772 ГЛАВА 22. МОДЕЛИРОВАНИЕ ВЕЙВЛЕТ-ПРЕОБРАЗОВАНИЙ СРЕДСТВАМИ GUI ПАКЕТА WAVELET TOOLBOX....................................................773 22.1. Просмотр вейвлетов.....................................................................................774 22.2. Одномерный дискретный вейвлет-анализ..................................................775 22.3. Одномерный пакетный вейвлет-анализ......................................................782 22.4. Вещественный и комплексный одномерный непрерывный вейвлет-анализ.......................................................................................................785 22.5. Удаление шума из стационарного случайного одномерного сигнала.....787 22.6. Оценка плотности распределения...............................................................789 22.7. Оценка регрессии..........................................................................................791 22.8. Отбор вейвлет-коэффициентов...................................................................793 СПИСОК ЛИТЕРАТУРЫ..............................................................................................795 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ........................................................................................798

Стр.9

Предисловие Современные тенденции в области телекоммуникаций в значительной мере связаны с разработкой цифровой аппаратуры и программного продукта, и это радикально меняет характер работы инженеров и научных работников - она все больше сводится к компьютерному моделированию. Особенностью устройств цифровой обработки сигналов (ЦОС) является то, что программные части данных устройств создаются непосредственно в процессе компьютерного моделирования, поэтому овладение его современными технологиями выдвигается на первый план. К таким технологиям, безусловно, относится программная среда (система) MATLAB, созданная компанией The Math Works, Inc. и предназначенная для компьютерного моделирования в различных областях науки и техники. В последние годы дисциплина "Цифровая обработка сигналов" и ее модификации включены в общеобразовательные стандарты российских вузов. Замечательно, что все чаще издаются отечественные и переводные книги по теории ЦОС, ее приложениям и реализации алгоритмов ЦОС - "процесс пошел". Нередко теоретические разделы поддерживаются примерами расчета в MATLAB. Стали появляться книги прикладного характера, которые не фрагментарно, а целиком посвящены моделированию в MATLAB, например, книга Р. Гонсалеса и др. "Цифровая обработка изображений в MATLAB", издательство "Техносфера", 2006. Тем не менее на сегодняшний день спрос на литературу по моделированию ЦОС в MATLAB намного превышает предложение. Это весьма обширная тема, и в предлагаемой книге затрагиваются базовые методы и алгоритмы ЦОС, теоретические основы которых изложены во многих источниках, в том числе и в учебном пособии этих же авторов "Основы цифровой обработки сигналов", издательство "БХВ-Петербург", 2005. (В ближайших планах его третье переиздание.) Сразу оговоримся, MATLAB - система необъятная, и даже в названной ограниченной области авторы никоим образом не претендуют на исчерпывающее описание возможностей MATLAB. Нюансы, тонкости и детали, равно как и разнообразие средств, предлагаемых для решения поставленных задач, можно постичь только на практике, привлекая мощную систему помощи MATLAB. Методика обучения компьютерному моделированию - особая. Фактически она сводится к самообучению - самостоятельному расширению знаний после приобрете

Стр.10

2 Предисловие ния начальных навыков, осваивания типовых приемов и определения вектора поисков в безбрежной системе MATLAB, которые в приложении к моделированию ЦОС в MATLAB постарались систематизировать и описать авторы. В книгу включено множество примеров - с их помощью, "без лишних слов", быстро осваивается технология моделирования. Для облегчения работы начинающим пользователям и замкнутого характера книги в нее включена первая часть, посвященная основам работы в MATLAB. Данная книга может быть полезна для всех инженерно-технических работников, проявляющих интерес к области ЦОС, однако в первую очередь она ориентирована на студентов, аспирантов и преподавателей вузов и может быть рекомендована, в частности, для следующих обязательных дисциплин:  Микропроцессоры и цифровая обработка сигналов (специальность 210405);  Цифровая обработка сигналов и сигнальные процессоры в системах подвижной связи (специальность 210402);  Цифровая обработка аудиовидеосигналов (специальность 210312). Предполагается, что читатели знакомы с основами теории ЦОС и с программированием на каком-либо языке высокого уровня. В книге даются лишь краткие теоретические справки по соответствующим разделам ЦОС. Содержание книги включает 22 главы, которые тематически разделены на три части: 1. Введение в MATLAB. 2. Моделирование ЦОС программными средствами MATLAB. 3. Моделирование ЦОС средствами GUI. Авторы частей и глав:  А. И. Солонина - часть I; в части II главы 8-11, 13, 14, 16, 17; в части III главы 20, 21.  С. М. Арбузов - в части II главы 12, 15, 18, 19; в части III - глава 22. Алла Ивановна Солонина, проф., к. т. н., и Сергей Михайлович Арбузов, доц., к. т. н., преподают на кафедре "Цифровая обработка сигналов" Санктпетербургского государственного университета телекоммуникаций им. проф. М. А. Бонч-Бруевича, возглавляемой Артуром Абрамовичем проф., д. т. н. Ланнэ, Все предложения и замечания, которые будут приняты авторами с благодарностью, просим присылать в издательство "БХВ-Петербург" по электронному адресу: [email protected].

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ГОУВПО «СИБИРСКАЯ ГОСУДАРСТВЕННАЯ ГЕОДЕЗИЧЕСКАЯ АКАДЕМИЯ»

Т.В. Дашковская

ЦИФРОВАЯ ОБРАБОТКА СИГНАЛОВ В СРЕДЕ MATLAB
Часть 1
Утверждено редакционно-издательским советом академии
в качестве лабораторного практикума для студентов, обучающихся
по направлению 200200 «Оптотехника», специальности 200203
«Оптико-электронные приборы и системы»

Новосибирск
СГГА
2010

УДК 528.7:004
Д217
Рецензенты: кандидат технических наук, доцент, НГТУ Г.А. Сырецкий
доктор технических наук, профессор, СГГА В.В. Малинин
Дашковская Т.В.
Д217 Цифровая обработка сигналов в среде matlab [Текст]: лабораторный
практикум в 2 ч. Ч. 1 / Т.В. Дашковская. - Новосибирск: СГГА, 2010. - 66 с.

ISBN 978-5-87693-398-0
Данный лабораторный практикум по дисциплинам «Теория изображений в
оптико-элетронных системах», «Цифровая обработка изображений» (4 курс,
бакалавры), «Компьютерное моделирование и проектирование» (3 курс),
«Специальные главы ЦОИ» (6 курс, магистры) предназначен для студентов,
обучающихся по направлению 200200 «Оптотехника», специальности 200203
«Оптико-электронные приборы и системы».
Лабораторный практикум состоит из двух частей. В первую часть входят
лабораторные работы, связанные с представлением информации и элементами
программирования в системе, моделированием и обработкой сигналов с
использованием пакета системы Signal Processing ToolBoxes, вторая часть
содержит лабораторные работы по цифровой обработке изображений с
использованием пакета системы Image Processing ToolBoxes.
Ответственный редактор: кандидат технических наук, доцент, СГГА Е.В.
Грицкевич
Печатается по решению редакционно-издательского совета СГГА
УДК 528.7:004
ISBN 978-5-87693-399-7 (ч. 1)
ISBN 978-5-87693-398-0

ГОУ ВПО «Сибирская государственная
геодезическая академия» (СГГА), 2010

СОДЕРЖАНИЕ
Лабораторная работа № 1. Общие принципы работы системы MATLAB .... 4
Лабораторная работа № 2. Элементы программирования............................ 15
Лабораторная работа № 3. Построение графиков.......................................... 26
Лабораторная работа № 4. Генерация сигналов............................................. 36
Лабораторная работа № 5. Представление линейных систем...................... 48
Список рекомендуемой литературы для углубленного изучения материала
..................................................................................................................... 60

ЛАБОРАТОРНАЯ РАБОТА № 1. ОБЩИЕ ПРИНЦИПЫ РАБОТЫ
СИСТЕМЫ MATLAB
Цель работы - ознакомление с системой MatLab, правилами создания
числовых массивов и приобретение практических навыков по использованию
средств системы для работы с ними.
1. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Название системы MatLab происходит от слов Matrix Laboratory
(матричная лаборатория). Пакет ориентирован на обработку массивов данных.
В интерфейс системы MatLab входят следующие панели:
Command Window (Окно Команд), где проводятся все расчеты и
операции;
Launch Pad (Окно Разделов), где можно получить доступ к различным
модулям ToolBox;
Workspace (Рабочее пространство), где отображается текущий набор
переменных, введенных пользователем в командном окне;
Current Directory (Текущий каталог), где можно установить текущий
каталог;
Command History (История команд), где хранятся команды, набираемые
пользователями.
Матричная система MatLab выделяется из других систем тем, что ее
операторы и функции имеют операнды в виде векторов и матриц. Даже операнд
в виде одного числа рассматривается как матрица размера 1 1. Так как
операции с матрицами могут быть как поэлементными, так и матричными, то в
поэлементные операторы добавляется точка. Например, символы точка,
звездочка ‘*’ определяют поэлементное умножение массивов, символ звездочка
‘*’ - матричное умножение (табл. 1). Набор любой команды должен
заканчиваться нажатием клавиши . Действие, выполняемое функцией,
применяется ко всем элементам массива, передаваемым в списке входных
аргументов.
В качестве примера можно привести результат вычисления синуса:
>> y = sin()
y=
0.3894 0.7174 0.9320 0.9996 0.9093
Символ точка с запятой (;) в конце оператора или функции подавляет вывод
результата на экран:
>> y = sin();
Справочная информация
Получить справочную информацию можно следующими операторами:
Синтаксис
helpwin
- справка о разделах и функциях системы MatLab;
helpdesk
- общая справка о системе MatLab;

Doc <имя_функции>
- вывод описания функции в окне Help ;
help <имя_функции> - краткая информация о функции;
type <имя _функции> - вывод текста m - файла функции;
demo
- команда вызова тестовых примеров.
Операторы и функции
Полный список операторов системы выводится оператором:
help ops
В табл. 1 приведен список арифметических операторов с синтаксисом их
применения.
Таблица 1.1 Список арифметических операторов
Функция

Название

Plus
uplus
minus
uminus
mtimes
times
mpower
power
mldivide
mrdivide
ldivide
rdivide

Плюс
Унарный плюс
Минус
Унарный минус
Матричное умножение
Поэлементное умножение массивов
Возведение в степень матрицы
Поэлементное возведение в степень массива
Обратное (справа налево) деление матриц
Деление матриц слева направо
Деление поэлементное массивов справа налево
Деление поэлементное массивов слева направо

Оператор Синтаксис
+
+
-
-
*
.*
^
.^
\
.\
./

M1+M2
+M
M1-M2
-M
M1*M2
M1.*M2
M1^x
M1.^x
M1\M2
M1/M2
M1.\M2
M1./M2

Для введения комментария используют знак процента - %.
Системные переменные и константы
В состав объектов MatLab входит ряд системных переменных и констант,
значения которых устанавливаются системой при ее загрузке или автоматически
формируются в процессе вычислений. Ниже перечислены некоторые из этих
объектов:
Ans - применяется для записи результата, если не используется оператор
присваивания.
Например:
>> cos()
ans =
1.0000 0.5403 -0.4161 -0.9900 -0.6536 0.2837 0.9602
pi - число (отношение длины окружности к ее диаметру).
Например:
>> pi
ans =
Угловые скобки используются в синтаксисе команды для условного
обозначения аргумента.

3.1416
Создание векторов и матриц
Рассмотрим некоторые способы формирования числовых массивов. При их
создании можно использовать:
Квадратные скобки;
Специальную конструкцию j:i:k;
Конкатенацию (объединение);
Специальные матричные функции.
Для создания вектор-строки используются квадратные скобки с
перечислением элементов строки через пробел или запятую и специальная
конструкция j:i:k с указанием начального значения вектора - j, шага - i и
конечного значения вектора - k через двоеточие (если значение шага равно 1,
его можно не указывать).
Для создания вектор-столбца элементы вектора перечисляются через точку
с запятой в квадратных скобках или транспонируется полученный ранее векторстрока. Для выполнения операции транспонирования используется одиночная
кавычка ("), которая ставится после индетификатора, определяющего
транспонируемую структуру. Для комплексных матриц транспонирование
дополняется сопряжением матрицы. Точка с одиночной кавычкой (.")
используется для транспонирования массива без операции сопряжения для
комплексных матриц.
Для создания матрицы можно использовать следующие способы ввода
элементов в квадратных скобках:
1. По строкам, разделяющимся точкой с запятой;
2. По столбцам, заданным в квадратных скобках;
3. По строкам в интерактивном режиме.
Задание 1. Создать вектор-строку, вектор-столбец и матрицы:
>> x = % создание вектор-строки
х=
12345
% результат
>> x = 1:2:10 % 1 - начальное значение вектора, 2 - шаг, 10 - конечное
значение
х=
13579
% результат
>> x = 1:10
х=
1 2 3 4 5 6 7 8 9 10 % результат
>> x = % создание вектор-столбца
х=
1
2
3
4

>> a = 9:2:18 % вектор-строка с начальным значением 9, конечным - 18,
с шагом 2
a=
9 11 13 15 17
>> a1 = a"
% транспонирование вектор-строки а в вектор-столбец а1
a1 =
9
11
13
15
17
>> x = ;
% создание матрицы способом 1)
>> x = [ ]; % создание матрицы способом 2)
>> x = ;
Выполнение каждой из последних трех команд приведет к созданию
матрицы:

1 2 3
4 5 6
7 8 9

Конкатенация (объединение) массивов
С помощью операции конкатенации можно формировать новые массивы из
ранее созданных - векторов, матриц, используя эти массивы в качестве своих
элементов. Объединять массивы можно по горизонтали и по вертикали.
При горизонтальной конкатенации в качестве разделителя массивов в
квадратных скобках используется запятая или пробел, например, если В и А -
матрицы, то M = [А, В] - горизонтальная конкатенация матриц А и В. А и В
должны иметь одинаковое число строк. Горизонтальная конкатенация может
быть применена для любого числа матриц в пределах одних скобок .
При вертикальной конкатенации в качестве разделителя массивов
в квадратных скобках используется точка с запятой, например, если C и D -
матрицы, то M = - вертикальная конкатенация матриц C и D. C и D
должны иметь одинаковое число столбцов. Вертикальная конкатенация может
быть применена для любого числа матриц в пределах одних скобок .
Вертикальная и горизонтальная конкатенация может быть применена в одной
операции.
Задание 2. Создать матрицу, используя вертикальную и горизонтальную
конкатенацию:
>> а = % создание вектор-столбца из трех элементов
а=
1
2
3

>> A = % горизонтальная конкатенация из трех вектор-столбцов а
A=
111
222
333
>> b = ; ] % создание вектор-строки из трех элементов
>> B = % вертикальная конкатенация из трех векторов-строк b
B=
148
148
148
>> A1 = ; % создание матриц А1 и А2 размерностью 2 2
>> A2 = ;
>> A3 = ;
% создание вектор-строки из четырех элементов
>> H = % горизонтальная конкатенация и вертикальная
% конкатенация
H=
0056
0118
1869
Специальные матричные функции
Ниже приведены некоторые функции для создания матриц специального
вида.
Функция zeros создает матрицу, заполненную нулями (нулевую матрицу):
zeros(m,n) - задание матрицы m n нулей;
zeros(n) - задание квадратной матрицы из n n нулей.
Пример создания нулевой матрицы из двух строк и трех столбцов:
>> x = zeros(2,3)
x=
000
000
Функция ones создает матрицу, заполненную единицами (единичную
матрицу):
ones(m,n) - создание единичной матрицы размером m n;
ones(n) - задание квадратной матрицы из n n единиц.
Задание 3. Создать квадратную единичную матрицу размерностью 2 2:
>> ones(2)
ans =
11
11
Функция
randn
создает
матрицу,
заполненную
нормальнораспределенными случайными числами.

Randn (m,n) - задание матрицы m n нормально-распределенных
случайных чисел.
randn (n) - задание квадратной матрицы n n.
Функция
rand
создает
матрицу,
заполненную
равномернораспределенными случайными числами.
rand (m,n) - задание матрицы m n равномерно-распределенных
случайных чисел.
Задание 4. Создать вектор-столбец с помощью вертикальной конкатенации
с использованием функций rand и randn:
>> x1 =
x1 =
0.9501
0.2311
-0.4326
-1.6656
Задание 5. Создать матрицу с помощью горизонтальной конкатенации с
использованием функций ones и zeros:
>> x1 =
x1 =
10
10
Функция repmat() создает матрицу, копируя исходный массив заданное
число раз по вертикали и горизонтали.
B = repmat(A,M,N) - функция создает матрицу B, состоящую из M копий
А по вертикали и N копий А по горизонтали, то есть M N копий массива A
(если А - число, функция формирует матрицу размером M N со значением
элементов, равных А).
Задание 6. Сформировать матрицу c использованием вектор-строки а из
трех элементов:
>> a = ;
>> A = repmat(a,2,1)
A=
159
159
Задание 7. Сформировать матрицу размерностью 2
которой равны десяти:
>> repmat(10,2,3)
ans =
10 10 10
10 10 10

3, все элементы

Индексация массивов
Элементы массивов обладают двумя свойствами: порядковым номером
(индексом) в массиве и собственно значением. Нумерация элементов в системе
MatLab начинается с единицы. Для указания индексов элементов массивов
используются круглые скобки (ошибка при индексации массива генерируется в
том случае, если индекс элемента меньше единицы или больше размера
массива).
Задание 8. Задать вектор-строку из четырех элементов и изменить третий
элемент на значение 8:
>> a = ;
>> a(3) = 8
a=
1289
Для указания элемента в матрице индексами служат номер строки и номер
столбца, разделенные запятой.
Задание 9. Изменить значение элемента матрицы случайных чисел S,
находящегося во второй строке и в четвертом столбце, на 1:
>> S = rand(4)
S=
0.9501 0.8913 0.8214 0.9218
0.2311 0.7621 0.4447 0.7382
0.6068 0.4565 0.6154 0.1763
0.4860 0.0185 0.7919 0.4057
>> S(2,4) = 1
S=
0.9501 0.8913 0.8214 0.9218
0.2311 0.7621 0.4447 1.0000
0.6068 0.4565 0.6154 0.1763
0.4860 0.0185 0.7919 0.4057
Для указания блока элементов массива используется символ двоеточие ":".
Обнулить в матрице F целых чисел размерностью 4 4 элементы,
находящиеся во второй и третьей строке и в первом и втором столбцах:
>> F =
F=
1479
5983
9653
7692
>> F(2:3,1:2) = 0
F=
1479
0083
0053

7692
Если надо изменить значение всего столбца или строки, то номера,
обозначающие диапазон значений, не указываются и остается одно двоеточие.
Задание 10. Обнулить третий и четвертый столбец из предыдущего
примера:
>> F(:,3:4) = 0
F=
1400
0000
0000
7600
Пустые квадратные скобки удаляют информацию из индексированной
структуры.
A(m,:) = - удаляет строку m из матрицы A.
A(:,n) = - удаляет столбец n из матрицы A.
Сервисные функции
Ниже приведены некоторые функции, необходимые при работе с
массивами:
= size(<идентификатор_массива>) - возвращает размер массива,
где M - число строк; N - число столбцов.
Задание 11. Определить размерность единичной матрицы:
>> s = ones(2,3);
>> = size(s)
M=
2
N=
3
max(<идентификатор_массива>) и min(<идентификатор_массива>) -
вычисляет вектор строку, содержащую максимальные или минимальные
элементы в каждом столбце матрицы.
Задание 12. Определить максимальные значения матрицы случайных
чисел:
>> v = rand(3)
v=
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> ma = max(v)
ma =
0.9501 0.8913 0.8214
% максимальные значения каждого столбца.
Чтобы найти экстремальное значение в матрице, надо преобразовать ее в
вектор. Для этого можно использовать функцию reshape (X,M,N), где X -

Преобразуемая матрица, M - размерность матрицы по вертикали (число строк) ,
N - размерность по горизонтали (число столбцов).
Задание 13. Преобразовать матрицу из предыдущего примера в векторстроку и найти экстремальные значения.
>> = size(v);
>>к = reshape(v,1,M*N)
k=
0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565 0.0185 0.8214
>> max(к)
ans =
0.9501
>> min(k)
ans =
0.0185
Существует более простой способ нахождения экстремального значения в
массиве размерностью больше единицы - представить этот массив
одномерным, используя индексацию всех значений:
>>max(v(:))
ans =
0.9501
length(<идентификатор_массива>) - определение длины вектора; для
матрицы это эквивалентно выполнению функций max(size(X)).
Задание 14. Определить длину заданного вектора:
>> c = ;
>> length(c)
ans =
7% длина вектора с
Одиночная кавычка (") используется для создания строковой константы,
например:
>> a = "Введите матрицу ";
Одиночная кавычка также используется для выполнения операции
транспонирования (см. стр. 5).

2. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
1. Создать вектор-строку: начальный элемент равен - , конечный, шаг
равен 0.1. Транспонировать строку в столбец.
2. Создать три вектор-строки из 5 элементов fi = , где
n = 5 для х = 2, 3, 4. Объединить эти строки в матрицу А(3 × 5).
3. Создать три вектор-столбца из 5 элементов арифметической
прогрессии. Элемент арифметической прогрессии рассчитывается по формуле:
an = an-1 + d,
где аn-1 - предыдущий элемент; аn - последующий.
Пять элементов вектора формируются, начиная с задания первого элемента
а и c использованием шага арифметической прогрессии d для задания
последующих элементов:
Для первого вектор-столбца a = 2; d = 1;
Для второго вектор-столбца a = 7; d = 2;
Для третьего вектор-столбца a = 10;

Целью лабораторной работы является изучение методики разработки программ сложных видов цифровой обработки сигналов, включающей комбинацию ключевых операций (БПФ, корреляции, сплайн-аппроксимации и передискретизации).

Задание к работе

Имеется набор экспериментальных данных в виде числового массива. Требуется спроектировать на внутреннем языке MATLAB программу цифровой обработки данных, реализующую точное определение количества периодов сигнала и частоту во временной области с использованием нескольких ключевых операций ЦОС: БПФ, корреляции, сплайн-аппроксимации и передискретизации.

Теоретические основы

Одной из важнейших задач цифровой обработки зашумленных сигналов является обнаружение информативного сигнала в потоке данных, искаженных шумами и помехами, и определение его параметров. Для этого применяются различные методы, такие как временная фильтрация (накопление), оптимальная частотная фильтрация, прямое и обратное преобразование Фурье, корреляционная обработка. Каждая из этих операций позволяет выполнять преобразования исходного сигнала, например, переход сигнала из временной области в частотную или наоборот, причем при этом производится уменьшение уровня шумов в обработанном сигнале. В задачах обнаружения и определения параметров защумленных сигналов усиление эффекта подавления шумов и увеличения точности определения параметров сигнала можно достичь, используя несколько методов цифровой обработки в комплексе. Примером может быть задача обработки эхо-сигнала спектрометра ЯМР

Результатом БПФ дискретизированного эхо-сигнала спектрометра ЯМР определенной частоты является количество пери­одов сигнала во временном окне. Если частота отсчетов или интервал дискретности по времени при измерении сигнала известен, то по количеству периодов во временном окне можно установить и частоту измеряемого сигнала. Точность определения частоты в спектре входного сигнала вполне определенна и зависит от количества периодов p сигнала. Если количество периодов целое, то частота с помощью БПФ находится абсолютно точно (при отсутствии зашумленности сигнала). Если же ко­личество периодов не является целым, то появляется погрешность определения частоты. Максимальное значение погрешности равняется 1/p. В некоторых, практически важных случаях, например, при обработке эхо-сигналов (рис. 1) импульсных спектрометров ЯМР, количество периодов анализируемого сигнала во временном окне принципиально ограничено величиной около 10 . В этом случае погрешность определения частоты с помощью БПФ достигает 1/10, т. е. 10%.

Влияние шума в регистрируемом сигнале во временной области можно значительно умень­шать за счет многократного повторения эксперимента и синхронного накопления эхо-сигналов (см. рис. 1).

Рис. 1. Исходный (А) и накопленный сигнал (Б) в борате железа.

Однако, как показано в , увеличение количества накоплений позволяет улуч­шать отношение сигнал/шум без искажения формы и уменьшения амплитуды накопленного эхо-сигнала лишь до некоторого предела. После этого предела накопление уже не приносит ощутимого улучшения качества. В частности, при большом времени накопления на эхо-сигнал начинают влиять постепенные изменения параметров приборов, входящих в состав импульсного спектрометра ЯМР. При ограничении времени проведения анализа веществ количество возможных накоплений сигнала должно быть ограничено или вообще должно отсутствовать. Проблема обработки эхо-сигналов в условиях значительных шумов возникает еще и в том случае, когда имеется необходимость исследования веществ малой концентрации. Поэтому задача выполнения частотного анализа зашум­ленных эхо-сигналов актуальна.

Непосредственное использование БПФ для зашумленного сигнала не позволяет получить точное значение количества периодов во временном окне и частоты измеряемого сигнала в том случае, когда количество периодов не является целым, когда анализируемый сигнал занимает только часть временной области, модулирован по амплитуде и зашумлен. В практически важных случаях частотного анализа сигналов спектрометров ЯМР форма и начальная фаза эхо-сигналов известны. Это дает возможность создать эталонные сигналы, соответствующие ожидаемому эхо-сигналу по форме и начальной фазе, и произвести их корреляционное сравнение. Коэффициент корреляции эхо-сигнала с эталонным сигналом будет равен единице, если частоты эхо-сигнала и эталонного сигнала равны и эхо-сигнал не зашумлен. Поэтому при отсутствии шумов найти частоту эхо-сигнала можно производя корреляционное сравнение с эталонными сигналами, частоту эталонных сигналов подбирать до выполнения условия, когда коэффициент корреляции будет равен единице. Однако коэффициент корреляции уменьшается как при разнице частот эхо и эталонного сигналов, так и при совпадении частот, но из-за наличия шума. Поэтому таким способом определить частоту зашумленного сигнала невозможно.

Усовершенствование алгоритма определения частоты сигнала достигается за счет сочетания положительных качеств корреляционного подхода и БПФ с целью повышения точности определения частоты дискретизированного сигнала в условиях, когда обрабатываемый сигнал во временной области зашумлен, количество периодов не является целым, сигнал модулирован по амплитуде, количество периодов сигнала мало.

Идея предлагаемого алгоритма, описанного в , заключается в том, что в небольшой окрестности от предполагаемой частоты сигнала или количества периодов (приближенное значение частоты сигнала может быть найдено с помощью быстрого преобразования Фурье) вычисляются коэффициенты корреляции с несколькими эталонными сигналами в некоторой окрестности от приближенного значения, затем с помощью сплайн-интерполяции и передискретизации строится функция, выражающая зависимость коэффициента корреляции от частоты эталонов и находится максимум этой функции, по положению максимума определяется частота эталонного сигнала. Функция, построенная таким образом, имеет вид параболы с явно выраженным максимумом (см. рис. 2) как в случае незашумленного так и зашумленного сигнала, что и позволяет определить частоту эхо-сигнала более точно, чем это позволяет сделать БПФ. При наличии шума форма функции сохраняется, уменьшается лишь абсолютное значение максимума.

Рис. 2. Зависимость коэффициента корреляции от частоты при отсутствии шума (А) и при отношении сигнал/шум 1/3 (Б). Точное значение частоты равно 1010. Аппрок­симирующие кривые построены с помощью функции сплайн-аппроксимации spaps в MATLAB.

Точность определения частоты сигнала тем выше, чем ближе начальное приближение к истинной частоте. Поэтому применяется итераци­онное вычисление, на каждом этапе итерации в качестве начального приближения используется уточненное значение частоты, полученное на предыдущем этапе. В качестве первого приближе­ния берется частота, определенная с помощью БПФ.

Количество итераций для расчета частоты с заданной точностью с помощью описанного алгоритма зависит от того, насколько близко к искомой частоте будет находиться начальное приближение.

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

    Для различного количества итераций.

    При целом и нецелом количестве периодов сигнала, меньшем 10.

    При различном уровне зашумленности сигнала

Указания к выполнению

1. Использовать в качестве основы программу, приведенную в приложении.

2. Расчеты сделать по результатам 1-й и 2-й итерации отдельно. В качестве приближенного значения количества периодов на 1-й итерации взять результат, полученный с помощью БПФ, для 2-й итерации – уточненное в результате 1-й итерации значение количества периодов, величину окрестности вблизи уточненного значения количества периодов, в которой создаются эталонные сигналы (параметр procch в программе) уменьшить в m раз, m<=10.

3. При исследовании эффекта увеличения точности определения количества периодов и частоты сигнала по сравнению с БПФ за счет дополнительных операций цифровой обработки произвести измерения количества периодов и частоты сигнала в диапазоне количества периодов от К до К+1 с шагом 0.05 и вычислить максимальную, среднюю и среднеквадратическую погрешности определения количества периодов и частоты сигнала на этом интервале.

4. При исследовании эффекта увеличения точности определения количества периодов и частоты сигнала по сравнению с БПФ за счет дополнительных операций цифровой обработки при зашумленности сигнала произвести измерения количества периодов и частоты сигнала в диапазоне количества периодов от К до К+1 с шагом 0.05 при значениях амплитуды шума от 0 до 1 с шагом 0.1 и вычислить максимальную, среднюю и среднеквадратическую погрешности определения количества периодов и частоты сигнала на этом интервале для каждого уровня шума.

5. При исследовании зависимости погрешности определения количества периодов и частоты сигнала от количества периодов сигнала с помощью БПФ и комбинированного способа выполнить п.п.2 и 3 при значениях К=2, 3, …10, и построить графики зависимости максимальной, средней и среднеквадратической погрешностей от количества периодов сигнала.

    Задание к работе.

    Текст разработанной программы.

    Графики зависимости максимальной, средней и среднеквадрати-ческой погрешностей при различном уровне шума от количества периодов сигнала для БПФ и исследуемого способа комбинирован-ной обработки.

Приложение. Текст базовой программы.

%Комбинированное использование ключевых операций ЦОС

%Для повышения точности определения количества периодов и частоты

%"короткого" сигнала используется комбинация

%БПФ, кросскорреляции, сплайн-аппроксимации,передискретизации

kt=1024; % количество отсчетов

f=12; %частота сигнала

dt=2;%шаг дискретности по времени при измерении

kp=4.5;%количество периодов сигнала

%1. ГЕНЕРАЦИЯ МОДЕЛЬНОГО СИГНАЛА

for i=1:kt %обнуление массива сигнала

for i=1:kt %генерация модельного сигнала

if(i>0)&(i<=kt/2)

y(i)=sin(2*3.14*kp*i/kt)*i*exp(i/k2)/1200;

if(i>kt/2)&(i<(kt))

y(i)=sin(2*3.14*kp*i/kt)*(kt-i)*exp((kt-i)/k2)/1200;

y(i)=y(i)+shum*(2*rand(1)-1);

i=1:kt; %отображение модельного сигнала во временной области

title("Time domain")

xlabel("Sample number")

%2. ФУНКЦИОНАЛЬНОЕ ПРЕОБРАЗОВАНИЕ (БПФ)

bpfy=fft(y,kt);%БПФ

bpf=bpfy.*conj(bpfy)/kt;%БПФ

%f=1000*(0:256)/512;

plot(i(1:257),bpf(1:257));

title("Frequency domain")

xlabel("frequency")

%нахождение макс. знач. функции БПФ для массива Y

for i=1:kt %поиск количества периодов, соответствующих максимуму БПФ

%3. СОЗДАНИЕ ЭТАЛОНОВ И КРОССКОРРЕЛЯЦИЯ

procch=0.1;%область поиска в процентах относит. kp_bpf

shagkor=fr*procch/3;%шаг поиска

for iii=fr-fr*procch:shagkor:fr+fr*procch %цикл для создания 6 эталонов в окрестности приближенного

%значения количества периодов, определенных с помощью БПФ.

%Вычисление массивов эталонных сигналов

if(i>0)&(i<=kt/2)

x(i)=sin(2*3.14*iii*i/kt)*i*exp(i/k2)/1200;

if(i>kt/2)&(i<(kt))

x(i)=sin(2*3.14*iii*i/kt)*(kt-i)*exp((kt-i)/k2)/1200;

%вычисление средних значений модельного и эталонных сигналов

%вычисление СКО и коэф. корреляции модельного и эталонных сигналов

x_sko=x_sko+(x(i)-x_sr)*(x(i)-x_sr);

y_sko=y_sko+(y(i)-y_sr)*(y(i)-y_sr);

kor(k)=kor(k)+(x(i)-x_sr)*(y(i)-y_sr);

kor(k)=kor(k)/(sqrt(x_sko*y_sko));

end %конец цикла создания эталонов и вычисления массива коэф. корр.

%СПЛАЙН-АППРОКСИМАЦИЯ И ПЕРЕДИСКРЕТИЗАЦИЯ

r1=sin(xx); %только для тестирования сплайн-аппроксимации

yint=interp1(xx,kor,xi,"spline");% сплайн-аппроксимация коэф корреляции

%%apr=csaps(xx,r1);

apr=spaps(xkor,kor,0.000001);%%%%%%%%%%%%%%%

plot(xkor,r1,"ro")%%%%%%%%%%%%%%%%%

%НАХОЖДЕНИЕ УТОЧНЕННОГО ЗНАЧЕНИЯ КОЛИЧЕСТВА ПЕРИОДОВ СИГНАЛА

cmax=max(yint); %нахождение максимума коэф. корр.

for i=1:round((k-1)/0.1+1)

if (yint(i)==cmax)

kp_int=fr-fr*procch+(i-1)*shagkor/10 %уточненное значение частоты по МАХ функции коэф. корр.

А.Б.Сергиенко. Signal Processing Toolbox - обзор

Обработка сигналов всегда являлась одной из самых главных прикладных областей применения системы MATLAB. Об этом в первую очередь свидетельствует тот факт, что Signal Processing Toolbox был одним из первых специализированных пакетов - он появился уже в 1988 г., всего четыре года спустя после создания самой системы MATLAB.

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

Распространяемая в настоящее время версия MATLAB 6.1 (Release 12.1) содержит пакет Signal Processing версии 5.1. В ожидающуюся в скором времени версию MATLAB 6.5 (Release 13) войдет пакет Signal Processing версии 6.0.

Согласно официальной документации пакета его функции делятся на двадцать категорий. В приведенном ниже списке эти категории объединены в более крупные группы. Итак, по своему назначению функции пакета Signal Processing можно разделить следующим образом:

Кроме того, в состав пакета входят три графических среды:

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

Первая группа - функции расчета аналоговых фильтров-прототипов, то есть фильтров нижних частот с частотой среза, равной 1 рад/с. Функции возвращают нули, полюсы и коэффициент усиления фильтров и позволяют рассчитывать фильтры-прототипы Баттерворта (buttap ), Чебышева первого рода (cheb1ap ), Чебышева второго рода (cheb2ap ), эллиптические (Кауэра) (ellipap ) и Бесселя (besselap ).

Вторая группа - функции преобразования аналоговых фильтров, позволяющие преобразовать ФНЧ-прототип в ФНЧ с другой частотой среза (lp2lp ), в фильтр верхних частот (ФВЧ) с заданной частотой среза (lp2hp ), в полосовой фильтр с заданными средней частотой и шириной полосы пропускания (lp2bp ) и в режекторный фильтр с заданными средней частотой и шириной полосы задерживания (lp2bs ). Функции могут принимать и возвращать описания фильтров в виде векторов коэффициентов полиномов числителя и знаменателя функции передачи либо в виде параметров пространства состояний.

Третья группа - функции расчета аналоговых фильтров с заданными параметрами. В процессе расчета они вызывают функции первых двух групп. Набор требуемых для расчета исходных данных включает порядок фильтра, его тип (ФНЧ, ФВЧ, полосовой или режекторный), частоту или несколько частот среза, а также (в зависимости от прототипа) параметры пульсаций амплитудно-частотной характеристики (АЧХ). Имеются функции для расчета фильтров Баттерворта (butter ), Чебышева первого рода (cheby1 ), Чебышева второго рода (cheby2 ), эллиптических (Кауэра) (ellip ) и Бесселя (besself ). Все эти функции, кроме функции besself , могут использоваться и для расчета дискретных фильтров (см. далее). Признаком аналогового варианта расчета является указание строки "s" в качестве последнего входного параметра.

Четвертая группа - функции определения требуемого порядка фильтра по заданным параметрам АЧХ (граничным частотам полос пропускания и задерживания, а также допустимым пульсациям в полосах пропускания и задерживания). Для каждого типа фильтра имеется своя функция определения требуемого порядка: для фильтра Баттерворта - buttord , для фильтра Чебышева первого рода - cheb1ord , для фильтра Чебышева второго рода - cheb2ord , для эллиптического фильтра - ellipord . Так же, как и функции предыдущей группы, данные функции позволяют определять требуемый порядок и для дискретных фильтров (см. далее). Признаком аналогового варианта расчета является указание строки "s" в качестве последнего входного параметра.

Пятая группа - функции преобразования форм описания аналоговых линейных систем. Для аналоговых систем поддерживаются четыре таких способа описания:

В пакете Signal Processing имеются функции, реализующие взаимные преобразования этих четырех форм представления аналоговых систем (лишь функция residue , работающая с полюсами и вычетами, относится не к пакету Signal Processing, а к базовой библиотеке MATLAB). Эти функции перечислены в следующей таблице.

Конечная форма Коэффициенты полиномов функции передачи Нули и полюсы Полюсы и вычеты Пространство состояний
Исходная форма
tf2zp residue tf2ss
Нули и полюсы zp2tf zp2ss
Полюсы и вычеты residue
Пространство состояний ss2tf ss2zp

residue может осуществлять преобразование в обоих направлениях. Направление преобразования определяется числом входных и выходных параметров.

Перечисленные в таблице функции, кроме функции residue , могут также осуществлять преобразования дискретных систем, поскольку формулы преобразования для аналоговых и дискретных систем являются одинаковыми.

Наконец, к шестой группе следует отнести единственную функцию freqs , позволяющую рассчитать или отобразить графически амплитудно- и фазочастотную характеристики (АЧХ и ФЧХ) аналоговой линейной системы. Исходными данными являются коэффициенты полиномов числителя и знаменателя функции передачи системы.

В качестве примера применения функций работы с аналоговыми системами рассчитаем эллиптический ФНЧ четвертого порядка с частотой среза 3 кГц, пульсациями АЧХ в полосе пропускания, равными 1 дБ, и с подавлением сигнала в полосе задерживания, равным 20 дБ, а затем построим графики его АЧХ и ФЧХ.

Ellip(4, 1, 20, 2*pi*3000, "s"); % расчет фильтра
f = 0:10:10000; % вектор частот для расчета АЧХ и ФЧХ
h = freqs(b, a, 2*pi*f); % комплексный коэффициент передачи
subplot(2, 1, 1)

grid
subplot(2, 1, 2)
plot(f, unwrap(angle(h))*180/pi) % график ФЧХ (в градусах)
grid

Использованная в коде примера функция unwrap устраняет незначащие скачки ФЧХ на 360°.

Данная категория функций является довольно многочисленной и объединяет разнообразные средства анализа дискретных линейных систем - как правило, представленных в виде векторов коэффициентов полиномов числителя и знаменателя функции передачи (в z -области).

Функция freqz является дискретным аналогом функции freqs , она позволяет рассчитать комплексный коэффициент передачи или построить графики АЧХ и ФЧХ дискретной системы. Исходными данными являются коэффициенты полиномов числителя и знаменателя функции передачи системы.

Аналогично функции freqz работает функция grpdelay , позволяющая рассчитать или графически отобразить частотную зависимость групповой задержки, вносимой дискретным фильтром.

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

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

Функция filternorm позволяет рассчитать норму дискретного фильтра. Этот параметр используется, например, при выборе коэффициентов масштабирования отдельных секций фильтра, реализованного в последовательной (каскадной) форме, с целью уменьшения ошибок округления. Поддерживаются два варианта: 2-норма и -норма. 2-норма представляет собой среднеквадратическое значение АЧХ фильтра (или, что то же самое, корень из суммы квадратов отсчетов импульсной характеристики фильтра), а -норма - это максимальное значение АЧХ.

Функция fvtool по существу представляет собой графическую среду, предназначенную для анализа и визуализации характеристик дискретных систем (Filter Visualization Tool). Однако, в отличие от других графических сред пакета, fvtool действительно является функцией , поскольку при вызове требует наличия входных параметров - коэффициентов полиномов числителя и знаменателя функции передачи анализируемого фильтра. Существенным достоинством данной функции является возможность одновременного просмотра характеристик нескольких фильтров. Графический интерфейс пользователя, обеспечиваемый данной функцией, практически такой же, как в среде анализа и синтеза фильтров FDATool. Ниже показаны пример вызова функции fvtool и создаваемое ей графическое окно в режиме показа частотной зависимости вносимой фильтром групповой задержки.

b = ;
a = ;
fvtool(b, a)

Большую группу составляют функции преобразования форм описаний дискретных систем. Для дискретных систем поддерживается больше форм представления, чем для аналоговых:

  • Коэффициенты полиномов числителя и знаменателя функции передачи системы.
  • Нули, полюсы и коэффициент усиления системы (разложение функции передачи на множители).
  • Полюсы и вычеты (представление функции передачи системы в виде суммы простых дробей).
  • Параметры пространства состояний.
  • Представление в виде набора последовательно (каскадно) включенных секций второго порядка.
  • Представление в виде решетчатой или решетчато-лестничной структуры.

Функции, осуществляющие преобразования между различными формами представления, перечислены в следующей таблице.

Конечная форма Коэффициенты полиномов функции передачи Нули и полюсы Полюсы и вычеты Пространство состояний Секции второго порядка Решетчатая структура
Исходная форма
Коэффициенты полиномов функции передачи tf2zp residuez tf2ss tf2sos tf2latc
Нули и полюсы zp2tf zp2ss zp2sos
Полюсы и вычеты residuez
Пространство состояний ss2tf ss2zp ss2sos
Секции второго порядка sos2tf sos2zp sos2ss
Решетчатая структура latc2tf

Как видно из таблицы, одна и та же функция residuez (это аналог функции residue , предназначенный для работы с описаниями дискретных систем) может осуществлять преобразование в обоих направлениях. Направление преобразования определяется числом входных и выходных параметров.

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

Оставшиеся функции данной категории являются вспомогательными. Функция freqspace рассчитывает вектор равномерно расположенных значений частот, функция freqzplot предназначена для построения графиков частотных характеристик, а функция unwrap позволяет устранить незначащие скачки фазочастотных характеристик на 2p , отыскивая эти скачки между элементами вектора и сдвигая нужные фрагменты вектора на 2p n .

Операция линейной дискретной фильтрации в общем случае описывается следующим образом:

Здесь x(k) - отсчеты входного сигнала, y(k) - отсчеты выходного сигнала, a i и b j - постоянные коэффициенты. Максимальное из чисел m и n называется порядком фильтра.

Предыдущие выходные отсчеты могут не использоваться при расчетах, тогда все a i = 0 и фильтр называется нерекурсивным или трансверсальным . Если предыдущие выходные отсчеты используются, фильтр называется рекурсивным.

Линейная дискретная фильтрация относится к технологиям обработки произвольных данных, поэтому соответствующая функция - filter - принадлежит не пакету Signal Processing, а является встроенной в ядро MATLAB. Функция filter2 , также принадлежащая базовой библиотеке MATLAB, реализует двумерную дискретную фильтрацию.

Поскольку фильтр с постоянными коэффициентами является линейной стационарной дискретной системой, его реакция на произвольный входной сигнал может быть представлена как дискретная свертка входного сигнала с импульсной характеристикой фильтра:

Здесь h(k) - отсчеты импульсной характеристики фильтра. Импульсная характеристика представляет собой реакцию фильтра на поданный на вход одиночный отсчет единичной величины.

Разумеется, вычисления по формуле свертки могут быть реализованы на практике только при конечной длине импульсной характеристики фильтра. Данная операция осуществляется функцией conv ; так же как и реализация алгоритма дискретной фильтрации, она относится не к пакету Signal Processing, а к базовой библиотеке MATLAB. В действительности реализация функции conv сводится к вызову функции filter с соответствующими входными параметрами. Функция conv2 реализует двумерную дискретную свертку. Еще одна функция базовой библиотеки MATLAB - deconv - реализует обращение свертки, позволяя по результату свертки и одному из входных векторов определить второй входной вектор.

Упомянутые выше базовые функции дискретной фильтрации, как уже было сказано, относятся к базовой библиотеке MATLAB; собственно же в пакете Signal Processing расположены функции, решающие более специфические задачи фильтрации.

Прежде всего следует отметить, что функция filter дает возможность доступа к начальному и конечному внутренним состояниям фильтра, позволяя за счет этого организовывать блочную обработку сигнала. Иногда при этом возникает необходимость сформировать вектор внутреннего состояния фильтра, зная некоторое количество предыдущих входных и выходных отсчетов. Такой расчет выполняется с помощью функции filtic .

Функция fftfilt реализует дискретную фильтрацию с использованием быстрого преобразования Фурье (БПФ) в сочетании с разделением сигнала на блоки. Таким способом могут быть реализованы только нерекурсивные фильтры. Результат работы функции совпадает (с точностью до вычислительных погрешностей) с результатами обычной фильтрации, реализуемой с помощью функции filter . Однако скорость вычислений при фильтрации с помощью БПФ может оказаться существенно выше, особенно если длина входного сигнала во много раз превышает длину импульсной характеристики фильтра (или наоборот).

Функция filtfilt позволяет компенсировать фазовый сдвиг, вносимый при обычной фильтрации (иными словами, данная функция реализует фильтрацию без внесения временной задержки). Осуществляется это путем двунаправленной обработки сигнала. Первый проход фильтрации осуществляется обычным образом, а затем полученный выходной сигнал фильтруется второй раз - от конца к началу. За счет этого происходит компенсация фазовых сдвигов, а результирующий порядок фильтра увеличивается в два раза. Следует отметить, что для результирующего (эквивалентного двум проходам фильтрации) фильтра не выполняется условие причинности.

При практической реализации рекурсивных фильтров высокого порядка они часто представляются в виде последовательно включенных секций второго порядка. Это позволяет ослабить погрешности вычислений, возникающие из-за ошибок округления и квантования коэффициентов фильтра. Средства анализа ошибок такого рода сосредоточены в пакете Filter Design, а в пакете Signal Processing имеется функция sosfilt , позволяющая реализовать дискретную фильтрацию данных с помощью фильтра, представленного в виде секций второго порядка.

Еще одной возможной структурой дискретного фильтра является решетчатая структура. Для осуществления фильтрации с помощью фильтра, представленного в такой форме, предназначена функция latcfilt .

Функция medfilt1 , реализующая одномерную медианную фильтрацию, относится к нелинейным алгоритмам фильтрации. Сущность ее работы состоит в том, что к входному сигналу применяется скользящее окно заданной длины, отсчеты в пределах окна упорядочиваются и в качестве выходного отсчета возвращается значение из середины упорядоченного окна (или полусумма двух ближайших к середине элементов, если окно имеет четную длину). Медианная фильтрация применяется, например, для устранения импульсных помех (щелчков) при обработке звуковых сигналов. Функция medfilt2 , реализующая двумерный вариант медианной фильтрации, расположена в пакете Image Processing.

Функция sgolayfilt осуществляет дискретную фильтрацию с помощью фильтра Савицкого-Голея. Сущность ее заключается в том, что входной сигнал разбивается на блоки заданного размера и в пределах каждого блока выполняется полиномиальная аппроксимация сигнала полиномом заданной степени по критерию минимума среднеквадратической ошибки. Если степень полиномов на единицу меньше размера блоков, выходной сигнал будет равен входному; при меньшей степени полиномов будет происходить сглаживание сигнала. Фильтры Савицкого-Голея применяются для "очистки" сигналов от шумов.

Под синтезом дискретного фильтра понимается выбор таких наборов коэффициентов {a i } и {b i }, при которых характеристики получающегося фильтра удовлетворяют заданным требованиям. Строго говоря, в задачу проектирования входит и выбор подходящей структуры фильтра с учетом конечной точности вычислений. Это особенно актуально при реализации фильтров "в железе" - с использованием специализированных БИС или цифровых сигнальных процессоров. Эффекты, связанные с конечной точностью вычислений, можно анализировать с помощью функций пакета Filter Design; функциями синтеза фильтров эти эффекты не учитываются.

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

Функция Тип фильтра АЧХ Метод синтеза
butter Рекурсивный Баттерворта Билинейное z-преобразование
cheby1 Рекурсивный Чебышева первого рода Билинейное z-преобразование
cheby2 Рекурсивный Чебышева второго рода Билинейное z-преобразование
ellip Рекурсивный Кауэра (эллиптическая) Билинейное z-преобразование
bilinear Рекурсивный Билинейное z-преобразование
impinvar Рекурсивный Произвольный аналоговый прототип Инвариантное преобразование импульсной характеристики
yulewalk Рекурсивный Кусочно-линейная Авторегрессионный метод
invfreqz Рекурсивный Произвольная Минимизация разности между числителем функции передачи и произведением ее знаменателя и желаемой ЧХ
prony Рекурсивный Синтез по заданной импульсной характеристике Экспоненциальная аппроксимация Прони
fir1 Нерекурсивный Многополосная
fir2 Нерекурсивный Кусочно-линейная Обратное преобразование Фурье с использованием окон
firls Нерекурсивный Минимизация среднеквадратической ошибки
fircls Нерекурсивный Кусочно-постоянная
fircls1 Нерекурсивный ФНЧ, ФВЧ Минимизация среднеквадратической ошибки с ограничением максимального отклонения
firrcos Нерекурсивный ФНЧ Косинусоидальное сглаживание
intfilt Нерекурсивный ФНЧ Минимаксная аппроксимация
remez Нерекурсивный Кусочно-линейная с переходными полосами Минимаксная аппроксимация
cremez Нерекурсивный (в том числе с нелинейной ФЧХ и комплексными коэффициентами) Кусочно-линейная с переходными полосами Минимаксная аппроксимация

Методы синтеза дискретных фильтров можно разделить на две большие группы: с использованием и без использования аналогового прототипа. При использовании аналогового фильтра-прототипа необходимо каким-либо образом представлять аналоговую функцию передачи, заданную в s-области, в дискретную функцию передачи, заданную в z-области. В пакете Signal Processing реализованы два метода такого преобразования: метод инвариантной импульсной характеристики и метод билинейного z-преобразования. Оба метода в результате дают рекурсивные дискретные фильтры.

При использовании метода инвариантной импульсной характеристики происходит дискретизация импульсной характеристики аналогового прототипа. Частотная характеристика получающегося дискретного фильтра, соответственно, представляет собой периодически повторенную частотную характеристику аналогового прототипа. По этой причине данный метод непригоден для синтеза фильтров верхних частот и вообще фильтров, коэффициент передачи которых не стремится к нулю с ростом частоты. Метод инвариантной импульсной характеристики реализован в пакете Signal Processing с помощью функции impinvar .

При использовании метода билинейного z-преобразования происходит искажение характеристики аналогового прототипа только вдоль частотной оси. При этом частотный диапазон аналогового фильтра (от нуля до бесконечности) преобразуется к рабочему диапазону частот дискретного фильтра (от нуля до половины частоты дискретизации). Преобразование частотной оси описывается функцией арктангенса, поэтому частоты, значительно меньшие частоты дискретизации, преобразуются приблизительно линейно. Данный метод реализуется с помощью функции bilinear для произвольного аналогового прототипа. Кроме того, имеются готовые функции расчета фильтров нижних и верхних частот, полосовых и режекторных фильтров методом билинейного z-преобразования по аналоговым прототипам с АЧХ Баттерворта, Чебышева первого и второго рода, а также Кауэра (эллиптические фильтры). Это соответственно функции butter, cheby1, cheby2 и ellip . Все эти функции могут использоваться и для расчета аналоговых фильтров (см. ранее). Признаком дискретного варианта расчета является отсутствие строки "s" в списке входных параметров. Имеются также функции определения требуемого порядка этих фильтров по заданным параметрам АЧХ (граничным частотам полос пропускания и задерживания, а также допустимым пульсациям в этих полосах). Это соответственно функции buttord, cheb1ord, cheb2ord, ellipord . Так же, как и функции синтеза фильтров, данные функции позволяют определять требуемый порядок и для аналоговых фильтров (см. ранее). Признаком дискретного варианта расчета является отсутствие строки "s" в списке входных параметров.

В качестве примера синтезируем эллиптический ФНЧ четвертого порядка с такими же параметрами, как у аналогового фильтра в одном из предыдущих примерах (частота среза 3 кГц, пульсации АЧХ в полосе пропускания 1 дБ, и подавление сигнала в полосе задерживания 20 дБ). Частоту дискретизации примем равной 12 кГц. После синтеза построим графики АЧХ и ФЧХ полученного фильтра с помощью функции freqz .

    Fs = 12000; % частота дискретизации
    F0 = 3000; % частота среза
    = ellip(4, 1, 20, F0/Fs*2); % расчет фильтра
    freqz(b, a, , Fs); % вывод графиков

Методы синтеза, не использующие аналоговый прототип, называются прямыми. Их, в свою очередь, можно также разделить на две группы: методы синтеза рекурсивных и нерекурсивных фильтров.

К функциям прямого синтеза нерекурсивных фильтров относятся следующие:

  • Функции, реализующие синтез фильтров путем обратного преобразования Фурье от желаемой АЧХ с последующим умножением получившейся импульсной характеристики на некоторую весовую функцию (окно) для ослабления пульсаций АЧХ, появляющихся из-за эффекта Гиббса. Это функции fir1 и fir2 . Сюда же можно отнести функцию синтеза ФНЧ с косинусоидальным сглаживанием АЧХ - firrcos . Кроме того, функция kaiserord позволяет по заданным параметрам АЧХ оценить требуемый порядок фильтра при синтезе с использованием окна Кайзера.
  • Функции, реализующие минимизацию среднеквадратического отклонения АЧХ получающегося фильтра от заданной. Это функции firls , fircls и fircls1 . Последние две функции решают оптимизационную задачу с ограничением максимального отклонения АЧХ от заданной. Это позволяет избежать появления больших выбросов АЧХ вблизи переходных полос.
  • Функции, реализующие минимаксную оптимизацию, то есть минимизацию пикового отклонения АЧХ получающегося фильтра от заданной. В результате получаются фильтры с равномерными пульсациями АЧХ. К данной группе относятся функции remez (стандартный вариант метода Ремеза, реализованный еще в самых первых версиях пакета Signal Processing) и cremez (расширенный вариант, поддерживающий синтез фильтров с нелинейной ФЧХ и с комплексными коэффициентами). Кроме того, функция remezord позволяет по заданным параметрам АЧХ оценить требуемый порядок фильтра при синтезе методом Ремеза.

В качестве примера синтезируем методом Ремеза нерекурсивный ФНЧ 32-го порядка с теми же частотами среза и дискретизации, как в предыдущем примере (частота среза 3 кГц, частота дискретизации 12 кГц). Начало полосы задерживания зададим равным 3,5 кГц. После синтеза построим графики импульсной характеристики, а также АЧХ полученного фильтра (ФЧХ фильтра линейна, поэтому выводить ее график не имеет смысла). АЧХ выведем в линейном масштабе по вертикали, чтобы наглядно продемонстрировать равномерность ее пульсаций.

    Fs = 12000; % частота дискретизации
    F0 = 3000; % частота среза
    F1 = 3500; % начало полосы задерживаниЯ
    b = remez(32, , ); % расчет фильтра
    impz(b) % график импульсной характеристики
    = freqz(b, 1, , Fs); % комплексный коэффициент передачи
    figure
    plot(f, abs(h)) % график АЧХ
    grid

К функциям прямого синтеза рекурсивных фильтров относятся следующие:

  • yulewalk - синтез рекурсивного фильтра с произвольной кусочно-линейной АЧХ методом Юла-Уолкера.
  • invfreqz - данная функция предназначена для решения задачи идентификации систем, она позволяет определить коэффициенты числителя и знаменателя функции передачи дискретной системы по набору значений этой функции передачи на различных частотах.

В завершение перечислим еще ряд функций, не вошедших в перечисленные выше группы. Функция maxflat предназначена для синтеза обобщенного фильтра Баттерворта (у таких фильтров число нулей функции передачи превышает число ее полюсов). Функция intfilt выполняет синтез фильтров, предназначенных для фильтрации сигнала при выполнении интерполяции и прореживания. Операцию свертки векторов можно представить как векторно-матричное произведение, а матрицу, участвующую в этом произведении, рассчитать с помощью функции convmtx . Наконец, функция sgolay выполняет синтез сглаживающего фильтра Савицкого-Голея. Поскольку, как описывалось выше, фильтр Савицкого-Голея обрабатывает отдельные блоки сигнала, такой фильтр не является стационарной системой. Поэтому функция sgolay возвращает целую матрицу меняющихся во времени коэффициентов эквивалентного нерекурсивного фильтра.

Кроме пакета Signal Processing, ряд функций синтеза дискретных фильтров имеется в пакетах Communications и Filter Design.

Слова "спектральный анализ" в сознании многих пользователей MATLAB прочно ассоциируются с функцией fft (см. далее раздел "Функции преобразований дискретных сигналов"), выполняющей дискретное преобразование Фурье (ДПФ). Однако это всего лишь взаимно-однозначное линейное преобразование, дающее представление детерминированного сигнала в частотной области. Если же анализируемый сигнал является случайным , для него имеет смысл только оценка спектральной плотности мощности , для расчета которой приходится тем или иным способом выполнять усреднение имеющихся данных. Кроме того, в ряде случаев нам известна некоторая дополнительная информация об анализируемом сигнале, и эту информацию желательно учесть при спектральном анализе.

Методы спектрального анализа случайных сигналов делятся на два больших класса - непараметрические и параметрические. В непараметрических (nonparametric) методах используется только информация, содержащаяся в отсчетах анализируемого сигнала. Параметрические (parametric) методы предполагают наличие некоторой статистической модели случайного сигнала, а процесс спектрального анализа в данном случае включает в себя определение параметров этой модели. Используется также термин "модельный спектральный анализ" (Model-Based Spectrum Analysis, MBSA).

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

Для определения спектральных характеристик дискретного случайного процесса вычисляется средний спектр мощности его ограниченного по длине фрагмента, а затем длина фрагмента устремляется к бесконечности:

. (1)

Здесь x (k ) - отсчеты случайного процесса, T - период дискретизации. Черта сверху обозначает усреднение по ансамблю реализаций.

Кроме того, этот спектр можно выразить через корреляционную функцию случайного процесса:

. (2)

Это выражение представляет собой дискретный аналог теоремы Винера-Хинчина: спектр дискретного случайного процесса является преобразованием Фурье от его корреляционной функции .

Как уже говорилось, при использовании непараметрических методов расчета спектра случайного процесса используется только информация, заключенная в отсчетах сигнала, без каких-либо дополнительных предположений. В пакете Signal Processing реализованы три таких метода - периодограмма, метод Уэлча (Welch) и метод Томсона (Thomson).

Периодограммой (periodogram) называется оценка спектральной плотности мощности, полученная по N отсчетам одной реализации случайного процесса согласно определению (1) (естественно, не путем взятия предела, а усреднением конечного числа слагаемых). Если при расчете спектра используется весовая функция (окно), полученная оценка спектра мощности называется модифицированной периодограммой (modified periodogram):

Соотношение (2) выполняется только при бесконечном числе используемых отсчетов, поэтому при любом конечном N периодограммная оценка спектральной плотности мощности оказывается смещенной - получается, что внутри суммы (2) корреляционная функция сигнала умножается на треугольную весовую функцию. Кроме того, можно показать, что периодограмма не является состоятельной оценкой спектральной плотности мощности, поскольку дисперсия такой оценки сравнима с квадратом ее математического ожидания при любом N . С ростом числа используемых отсчетов значения периодограммы начинают все быстрее флуктуировать - ее график становится все более изрезанным.

В пакете Signal Processing вычисление периодограммы (в том числе модифицированной) производится с помощью функции periodogram .

Для уменьшения изрезанности периодограммы необходимо применить какое-либо усреднение. Бартлетт (Bartlett) предложил разделять анализируемый сигнал на неперекрывающиеся сегменты, вычислять для каждого сегмента периодограмму и затем эти периодограммы усреднять. Если корреляционная функция сигнала на длительности сегмента затухает до пренебрежимо малых значений, то периодограммы отдельных сегментов можно считать независимыми. Уэлч (Welch) внес в метод Бартлетта два усовершенствования: использование весовой функции и разбиение сигнала на перекрывающиеся фрагменты. Применение весовой функции позволяет ослабить растекание спектра и уменьшить смещение получаемой оценки спектра плотности мощности ценой незначительного ухудшения разрешающей способности. Перекрытие сегментов введено для того, чтобы увеличить их число и уменьшить дисперсию оценки.

Вычисления при использовании метода Уэлча (он называется еще методом усреднения модифицированных периодограмм - averaged modified periodogram method) организуются следующим образом: вектор отсчетов сигнала делится на перекрывающиеся сегменты, каждый сегмент умножается на используемую весовую функцию, для взвешенных сегментов вычисляются модифицированные периодограммы, периодограммы всех сегментов усредняются.

Метод Уэлча является наиболее популярным периодограммным методом спектрального анализа. В пакете Signal Processing он реализуется с помощью функции pwelch .

Метод Томсона, реализуемый функцией pmtm , основан на использовании вытянутых сфероидальных функций (prolate spheroidal functions). Эти функции конечной длительности обеспечивают максимальную концентрацию энергии в заданной полосе частот. Помимо собственно спектральной оценки, функция pmtm может возвращать ее доверительный интервал. Для вычисления вытянутых сфероидальных функций требуется некоторое время, поэтому при многократном использовании функции pmtm можно ускорить расчеты, заранее рассчитав необходимые для анализа функции и сохранив их в базе данных. Для работы с такой базой (она представляет собой MAT-файл с именем dpss.mat ) предназначено семейство функций, имена которых начинаются с букв dpss (dpss - расчет функций, dpssload - загрузка семейства функций из базы данных, dpsssave - сохранение семейства функций в базе данных, dpssdir - вывод каталога базы данных, dpssclear - удаление семейства функций из базы данных).

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

X0 = randn(1, 1000);
a = 0.9;
X = filter(1, , X0);

Строим периодограмму:

periodogram(X, , , 1)

Как видите, периодограмма оказывается весьма изрезанной. Теперь выполним оценку спектра той же реализации методом Уэлча:

pwelch(X, , , , 1)

Изрезанность графика оказывается значительно меньшей. Наконец, используем метод Томсона:

pmtm(X, , , 1)

На выводимом функцией pmtm графике вместе с оценкой спектра мощности показаны границы доверительного интервала.

Использование параметрических методов подразумевает наличие некоторой математической модели анализируемого случайного процесса. Спектральный анализ сводится в данном случае к решению оптимизационной задачи, то есть поиску таких параметров модели, при которых она наиболее близка к реально наблюдаемому сигналу. В пакете Signal Processing реализован ряд разновидностей авторегрессионного анализа и два метода, основанных на анализе собственных чисел и векторов корреляционной матрицы сигнала: MUSIC (MUltiple SIgnal Classification) и EV (EigenVectors).

Согласно авторегрессионной модели сигнал формируется путем пропускания дискретного белого шума через "чисто рекурсивный" фильтр N -го порядка. Спектральная плотность мощности такого сигнала пропорциональна квадрату модуля коэффициента функции передачи формирующего фильтра. Таким образом, данный метод спектрального анализа сводится к определению коэффициентов фильтра заданного порядка, оценке мощности возбуждающего белого шума и аналитическому расчету спектральной плотности мощности. Для определения коэффициентов модели производится минимизация ошибки линейного предсказания сигнала. Теоретический анализ показывает, что оптимальные коэффициенты модели определяются лишь корреляционной функцией сигнала.

На практике мы не знаем истинной корреляционной функции исследуемого сигнала, поэтому для минимизации ошибки предсказания используются оценки КФ, полученные путем временного усреднения. Был разработан целый ряд методов авторегрессионного анализа, отличающихся в основном подходом к обработке краевых эффектов (то есть к способу вовлечения в вычисления тех краевых отсчетов сигнала, для которых при вычислении КФ не оказывается сдвинутой пары). В пакете Signal Processing реализованы метод Берга (Burg), ковариационный метод, модифицированный ковариационный метод и авторегрессионный метод Юла-Уолкера (Yule-Walker).

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

При использовании авторегрессионных методов важно правильно выбрать порядок авторегрессионной модели - он должен быть в два раза больше числа синусоидальных колебаний, которые предположительно содержатся в анализируемом сигнале.

Каждому методу авторегрессионного анализа в пакете Signal Processing соответствуют две функции - функция вычисления коэффициентов модели и функция собственно спектрального анализа. Функция спектрального анализа вызывает функцию расчета коэффициентов модели, а затем производит вычисление спектра. Имена функций сведены в следующую таблицу.

Название метода

Функция расчета коэффициентов модели

Функция спектрального анализа

Ковариационный метод arcov pcov
Модифицированный ковариационный метод armcov pmcov
Метод Берга arburg pburg
Авторегрессионный метод Юла-Уолкера aryule pyulear

Сформированный в приведенном выше примере экспоненциально-коррелированный случайный сигнал является авторегрессионным процессом первого порядка, поэтому перечисленные методы спектрального анализа являются для него вполне адекватными. Применим метод Берга, задав порядок авторегрессионной модели, равный единице (это второй параметр функции pburg ):

pburg(X, 1, , 1)

Полученная гладкая кривая практически совпадает с теоретическим спектром данного случайного процесса.

Метод MUSIC (MUltiple SIgnal Classification) предназначен для спектрального анализа сигналов, представляющих собой сумму нескольких синусоид (точнее, в общем случае - нескольких комплексных экспонент) с белым шумом. Целью спектрального анализа подобных сигналов, как правило, является не расчет спектра как такового, а определение частот и уровней (амплитуд или мощностей) гармонических составляющих. Метод MUSIC предназначен именно для этого, поэтому получаемая с его помощью зависимость уровня сигнала от частоты называется псевдоспектром (pseudospectrum).

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

В пакете Signal Processing метод MUSIC реализован с помощью функции pmusic , а функция rootmusic позволяет получить оценки частот и мощностей гармонических составляющих сигнала.

Близким родственником MUSIC является метод анализа собственных векторов (eigenvectors, EV). Его отличие состоит лишь в том, что в расчетных формулах собственные векторы умножаются на весовые коэффициенты, обратно пропорциональные соответствующим собственным числам. В литературе приводятся сведения о том, что метод EV порождает меньше ложных спектральных пиков, чем MUSIC, и, как правило, лучше передает форму спектра шума.

В пакете Signal Processing метод EV реализован с помощью функции peig , а функция rooteig позволяет получить оценки частот и мощностей гармонических составляющих сигнала.

Следует подчеркнуть, что псевдоспектры не являются оценками истинного спектра плотности мощности, а представляют собой лишь спектральные псевдооценки , позволяющие оценивать частоты синусоидальных или узкополосных составляющих сигнала с разрешением, несколько превосходящим разрешение авторегрессионных методов.

Дискретное преобразование Фурье, используемое во всех непараметрических методах спектрального оценивания, подразумевает периодическое продолжение анализируемого фрагмента сигнала. При этом на стыках фрагментов могут возникать скачки, приводящие к появлению боковых лепестков значительного уровня в спектральной области. Для ослабления этого эффекта сигнал перед выполнением ДПФ умножают на спадающую от центра к краям весовую функцию (окно ). В результате величина скачков на стыках сегментов уменьшается, меньше становится и уровень нежелательных боковых лепестков спектра - платой за это является некоторое расширение спектральных пиков.

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

В настоящее время пакет Signal Processing содержит примерно полтора десятка весовых функций. Распространение некоторых из них обусловлено вычислительной простотой, другие же являются в каком-либо смысле оптимальными.

Простейшим является прямоугольное окно, реализуемое функцией rectwin (в версиях пакета до 5.0 включительно данная функция имела имя boxcar ). Прямоугольное окно соответствует отсутствию взвешивания, данная функция включена в состав пакета лишь для формальной полноты набора весовых функций. Треугольное окно реализуется функцией triang , треугольную форму имеет и окно Бартлетта (функция bartlett ), оно лишь несколько отличается способом расчета.

Несколько весовых функций являются комбинациями гармонических составляющих. Перечислим их в порядке возрастания числа косинусоидальных слагаемых:

  • Окно Ханна (функция hann ), иногда неправильно называемое окном Хэннинга - одно косинусоидальное слагаемое.
  • Окно Хэмминга (функция hamming ) - одно косинусоидальное слагаемое.
  • Окно Блэкмена (функция blackman ) - два косинусоидальных слагаемых.
  • Окно Блэкмена-Харриса (функция blackmanharris ) - три косинусоидальных слагаемых.
  • Окно Наттолла (альтернативная версия окна Блэкмена-Харриса, функция nuttallwin ) - три косинусоидальных слагаемых.

Остальные окна описываются более сложными математическими соотношениями. Форма гауссова окна (функция gausswin ) не требует пояснений. Модифицированное окно Бартлетта-Ханна (функция barthannwin ) представляет собой линейную комбинацию окон Бартлетта и Ханна. Окно Бомена (функция bohmanwin ) является сверткой двух одинаковых косинусоидальных импульсов. Окно Чебышева (функция chebwin ) обладает боковыми лепестками фиксированного (задаваемого при расчете) уровня и рассчитывается путем обратного преобразования Фурье частотной характеристики окна. Окно Кайзера (функция kaiser ) также обладает параметром, регулирующим уровень боковых лепестков и ширину главного лепестка, при расчете данного окна используются модифицированные функции Бесселя. Окно Тьюки (функция tukeywin ) является прямоугольником с косинусоидально сглаженными краями. При крайних допустимых значениях коэффициента сглаживания оно превращается в прямоугольное окно или окно Ханна.

Наконец, функция window предоставляет общий интерфейс для вызова функций расчета конкретных окон.

Функции, относящиеся к данной категории, вычисляют различные статистические параметры сигналов. Функции можно разделить на несколько групп.

Первая группа относится к вычислению корреляционных и ковариационных функций (здесь следует напомнить, что в отечественной и зарубежной терминологии эти понятия не совпадают; в данном обзоре используется зарубежный вариант, принятый в MATLAB). Функция xcorr позволяет оценить корреляционную функцию сигнала или взаимную корреляционную функцию двух сигналов. Вариант этой функции, предназначенный для работы с двумерными сигналами, имеет имя xcorr2 . Функция xcov предназначена для оценивания ковариационной функции сигнала или взаимной ковариационной функции двух сигналов. Функции cov и corrcoef , входящие в базовую библиотеку MATLAB, позволяют получить соответственно ковариационную матрицу и матрицу коэффициентов корреляции путем усреднения нескольких реализаций случайных данных. Функция corrmtx возвращает матрицу промежуточных данных для оценки корреляционной матрицы сигнала, а также может возвращать и саму эту матрицу.

Следующая группа функций производит расчет статистических характеристик в частотной области, используя непараметрический метод Уэлча (см. выше). Функция csd предназначена для оценивания взаимной спектральной плотности двух случайных процессов. Она также может возвращать доверительный интервал для полученной оценки. Функция cohere дает оценку квадрата модуля функции взаимной когерентности двух случайных процессов. Функция tfe позволяет оценить комплексный коэффициент передачи системы по реализациям ее входного и выходного сигналов.

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

Функции параметрического моделирования и линейного предсказания

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

Одной из широко используемых на практике является авторегрессионная (AR) модель, в которой случайный сигнал формируется путем пропускания дискретного белого шума через “чисто рекурсивный” (то есть не использующий задержанных отсчетов входного сигнала) формирующий фильтр. Четыре функции пакета Signal Processing - arburg , arcov , armcov и aryule - предназначены для получения оценок коэффициентов формирующего фильтра и дисперсии (мощности) возбуждающего фильтр белого шума. Методы расчета, используемые этими функциями, были указаны ранее, в разделе “Авторегрессионные методы”, где шла речь об авторегрессионном спектральном анализе.

Если в нашем распоряжении имеется оценка комплексного коэффициента передачи системы на различных частотах, можно построить реализуемую модель системы, частотная характеристика которой будет максимально близкой к измеренной. Под реализуемостью системы здесь подразумевается представимость ее функции передачи в виде дробно-рациональной функции с заданными порядками полиномов числителя и знаменателя. Параметрическое моделирование в данном случае сводится к нахождению оптимальных коэффициентов полиномов числителя и знаменателя функции передачи. Данная задача решается двумя функциями пакета Signal Processing: функция invfreqs позволяет построить модель аналоговой системы, а функция invfreqz выполняет аналогичную операцию применительно к дискретным системам.

Еще один вариант задачи параметрического моделирования предполагает построение модели системы по имеющейся оценке ее импульсной характеристики . Для этого в пакете Signal Processing имеются две функции. Функция prony использует тот факт, что импульсная характеристика рекурсивной дискретной системы при отсутствии у нее кратных полюсов представляет собой сумму дискретных экспоненциальных функций (в общем случае комплексных). Алгоритм, реализуемый данной функцией, был первоначально разработан в 18 веке бароном де Прони с целью подгонки параметров экспоненциальной аналитической модели под экспериментальные данные. Устойчивость полученной системы не гарантируется, однако первые n отсчетов (n - заданный при расчете порядок числителя функции передачи системы) ее импульсной характеристики точно совпадают с заданными.

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

В качестве примера получим методами Прони и Штейглица-МакБрайда модель системы третьего порядка, задав в качестве образца треугольную импульсную характеристику:

h = ; % импульснаЯ характеристика
= prony(h, 3, 3); % метод Прони
= stmcb(h, 3, 3); % метод Штейглица-МакБрайда
% графики импульсных характеристик полученных систем
impz(b1, a1, 30)
title("Prony")
figure
impz(b2, a2, 30)
title("Stmcb")

Сравнение графиков наглядно демонстрирует различия двух алгоритмов. При использовании метода Прони первые четыре отсчета полученной импульсной характеристики точно совпадают с заданными, однако в дальнейшем отклонения от заданных величин сильно возрастают, а после окончания заданного фрагмента наблюдается “хвост” с довольно большим уровнем, так как функция prony не делает никаких предположений о требуемых значениях импульсной характеристики за пределами заданного фрагмента. Функция stmcb минимизирует квадратичную ошибку воспроизведения заданной бесконечной импульсной характеристики, при этом по окончании явно заданного фрагмента она считается равной нулю. В результате точного соответствия отсчетов заданной и полученной импульсных характеристик не наблюдается (за исключением первого), зато ошибка воспроизведения характеристики “размазана” по отсчетам более равномерно.

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

Модели систем, основанные на линейном предсказании, могут быть представлены в различных формах и, соответственно, описаны с помощью различных наборов параметров. Ряд функций пакета Signal Processing позволяет преобразовывать описание модели из одной формы в другую. Эти функции перечислены в следующей таблице.

Конечная форма

Автокорре- ляционная последовательность

Коэффициенты отражения

Коэффициенты предсказания

Арксинусные параметры

Логарифми- ческие отношения

Частоты спектральных линий

Исходная форма

Автокорреляционная последовательность

ac2rc, schurrc

Коэффициенты отражения

Коэффициенты предсказания

Арксинусные параметры

Логарифмические отношения

Частоты спектральных линий

Кроме того, в пакете Signal Processing имеется еще несколько функций, связанных с линейным предсказанием. Так, для расчета коэффициентов предсказывающего фильтра необходимо решить систему линейных уравнений, матрица которой представляет собой корреляционную матрицу входного сигнала. Эта матрица обладает рядом свойств, благодаря которым можно сократить число вычислительных операций, требующихся для решения системы линейных уравнений. Во-первых, корреляционная матрица является самосопряженной (то есть не меняется после применения к ней эрмитова сопряжения - сочетания транспонирования с комплексным сопряжением). Для вещественного сигнала самосопряженность означает просто симметрию матрицы относительно главной диагонали. Во-вторых, в случае стационарного случайного процесса (а только для таких процессов можно использовать предсказывающий фильтр с постоянными параметрами) корреляционная матрица является матрицей Теплица - вдоль ее диагоналей, параллельных главной, стоят одинаковые числа. Наконец, правая часть системы уравнений представляет собой сдвинутый на одну позицию первый столбец корреляционной матрицы. Системы линейных уравнений с матрицами, обладающими указанными свойствами, называются системами уравнений Юла-Уолкера , а для их решения был разработан рекурсивный метод Левинсона-Дурбина . Данный итерационный алгоритм реализуется функцией levinson . Функция rlevinson решает обратную задачу - позволяет найти вектор отсчетов корреляционной функции сигнала по заданным коэффициентам линейного предсказания.

Функция lpc реализует расчет коэффициентов линейного предсказания автокорреляционным методом и является аналогом функции aryule (см. ранее раздел, посвященный параметрическому спектральному анализу). Эти две функции различаются лишь MATLAB-кодом, используемым для вычисления оценки корреляционной матрицы. Даваемые ими результаты совпадают с точностью до вычислительных погрешностей.

Функции генерации сигналов

В пакете Signal Processing имеется целый ряд функций, предназначенных для генерации сигналов стандартной формы, часто встречающихся при решении различных задач обработки сигнала.

Генерация непериодических сигналов

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

  • rectpuls
  • - генерация одиночного прямоугольного импульса, единственным дополнительным параметром является длительность импульса;
  • tripuls
  • - генерация одиночного треугольного импульса, дополнительными параметрами являются длительность импульса и коэффициент его асимметрии; - генерация импульса, имеющего прямоугольный спектр, по формуле sinc(x ) = sin(p x )/(p x ). Дополнительных параметров данная функция не имеет;
  • gauspuls
  • - генерация радиоимпульса с гауссовой огибающей. Дополнительными параметрами являются несущая частота, относительная ширина спектра и уровень (в децибелах), по которому эта ширина спектра измеряется;
  • gmonopuls
  • - генерация гауссова моноимпульса (его форма является первой производной от гауссовой функции). Дополнительным параметром является средняя частота спектра формируемого сигнала.

Генерация периодических сигналов

Функции, относящиеся к данной группе, получают в качестве параметров вектор моментов времени и дополнительные аргументы, описывающие параметры формируемого импульса. Период формируемых сигналов равен 2p . Для формирования сигналов с иным периодом необходимо соответствующим образом масштабировать передаваемый функции временной аргумент. Возвращаемым результатом является вектор отсчетов результирующего сигнала. Имеются функции для генерации периодических сигналов следующей формы:

  • square
  • - генерация периодической последовательности прямоугольных импульсов. Дополнительным параметром является коэффициент заполнения импульсов (отношение длительности импульса к периоду их следования);
  • sawtooth
  • - генерация периодического пилообразного сигнала. Дополнительным параметром является коэффициент асимметрии треугольных импульсов, составляющих периодическую последовательность;
  • diric
  • - функция Дирихле. Дополнительным параметром является целочисленный порядок функции. Функция Дирихле рассчитывается по формуле diric(x ) = sin(nx /2)/(n sin(x /2));

Генерация колебаний с изменяющейся частотой

К данной группе относятся две функции - chirp и vco . Функция chirp генерирует колебания, мгновенная частота которых изменяется по одному из трех возможных законов - линейному, квадратичному или экспоненциальному. Более широкими возможностями обладает функция vco (Voltage Controlled Oscillator - генератор, управляемый напряжением), которая позволяет формировать колебания с произвольным законом изменения мгновенной частоты. По сути дела данная функция осуществляет частотную модуляцию.

Генерация последовательности импульсов

Функция pulstran служит для генерации конечной последовательности импульсов одинаковой формы с произвольно задаваемыми задержками и амплитудными множителями. Форма импульсов может задаваться одним из двух способов: именем функции, генерирующей импульс, либо уже рассчитанным вектором отсчетов.

В качестве примера рассмотрим применение функций pulstran и sinc для восстановления аналогового сигнала по его дискретным отсчетам согласно теореме Котельникова.

t = -5:0.1:10; % время для аналогового сигнала
k = 0:5; % номера отсчетов дискретного сигнала
sd = ; % дискретный сигнал
sa = pulstran(t, , "sinc"); % восстановленный аналоговый сигнал
stem(k, sd) % график дискретного сигнала
hold on
plot(t, sa, "r") % график аналогового сигнала
hold off

Функции преобразований дискретных сигналов

Пожалуй, наиболее известным из преобразований дискретных сигналов является дискретное преобразование Фурье (ДПФ). Соответствующая функция, использующая алгоритм быстрого преобразования Фурье (БПФ), в MATLAB относится к категории функций обработки данных и является встроенной (функции fft и ifft - одномерный вариант, fft2 и ifft2 - двумерный вариант, fftshift и ifftshift - перестановка половин вектора спектральных отсчетов для переноса нулевой частоты в середину вектора). Собственно же в пакете Signal Processing содержатся функции, реализующие более специфические преобразования.

Как и любое линейное преобразование, ДПФ может быть представлено как умножение матрицы преобразования на столбец отсчетов преобразуемого сигнала. Эта матрица преобразования для ДПФ вычисляется функцией dftmtx .

Опять-таки благодаря линейности ДПФ любой спектральный отсчет может быть представлен как результат обработки исходного сигнала некоторым фильтром. Представление этого фильтра в рекурсивной форме дает алгоритм Герцеля , реализуемый функцией goertzel . Если необходимо вычислить лишь некоторые спектральные отсчеты, данный алгоритм оказывается быстрее, чем БПФ.

Близким родственником ДПФ является дискретное косинусное преобразование. При его вычислении вместо периодического продолжения сигнала, что предполагается при ДПФ, соседние фрагменты продолженного сигнала зеркально переворачиваются во времени. В результате сигнал становится четной функцией времени, а его спектр - вещественным. По этой причине в формуле ДПФ вместо комплексных экспонент фигурируют лишь косинусы, что и дало название данному преобразованию. Прямое и обратное дискретные косинусные преобразования вычисляются функциями dct и idct соответственно.

Важным методом анализа дискретных числовых последовательностей является z-преобразование, результатом которого является функция комплексной переменной z :

.

В ряде задач необходимо вычислять z -преобразование для точек , расположенных на спиральном контуре: . Эффективный в вычислительном отношении расчет z-преобразования вдоль такого контура использует быстрое преобразование Фурье; он реализован в функции czt .

При реализации некоторых вариантов алгоритма быстрого преобразования Фурье для повышения эффективности необходимо переставить элементы обрабатываемого вектора в обратном битовом порядке (это означает, что в двоичных представлениях номеров элементов вектора биты считываются в обратном порядке, а затем вектор упорядочивается в соответствии с новыми номерами элементов). Для выполнения такой перестановки служит функция bitrevorder .

При анализе узкополосных сигналов бывает полезно представить сигнал в виде колебания с меняющимися во времени амплитудой и начальной фазой. Для получения такого представления используется комплексный аналитический сигнал , вещественная часть которого совпадает с исходным сигналом, а мнимая определяется преобразованием Гильберта от исходного сигнала. В частотной области аналитический сигнал характеризуется односторонним спектром: его спектральная функция отлична от нуля только для положительных частот. Функция hilbert осуществляет расчет аналитического сигнала в частотной области, вычисляя прямое ДПФ, обнуляя половину спектра и затем вычисляя обратное ДПФ.

В качестве примера вычислим аналитический сигнал для прямоугольного радиоимпульса:

s = zeros(256,1);
s(65:192) = cos(pi/2*(0:127)"); % отсчеты радиоимпульса
sa = hilbert(s); % аналитический сигнал
f = (-128:127)/128; % значения нормированных частот для графиков
subplot(2,1,1)
plot(f, abs(fftshift(fft(s)))) % спектр вещественного сигнала
subplot(2,1,2)
plot(f, abs(fftshift(fft(sa)))) % спектр аналитического сигнала

На нижнем графике хорошо видно обнуление спектра в области отрицательных частот и его удвоение в области положительных частот.

Кепстральный анализ

Кепстральный анализ связан с гомоморфной обработкой сигналов. Такая обработка подчиняется обобщенному принципу суперпозиции: если входной сигнал системы представляет собой комбинацию из нескольких сигналов, полученную с помощью математической операции А , то на выходе результаты обработки отдельных сигналов комбинируются с помощью операции Б . Кепстральный анализ нашел свое применение, в частности, в задачах обработки речи. В пакете Signal Processing имеется несколько функций, связанных с кепстральным анализом.

Функция rceps рассчитывает вещественный кепстр сигнала, при этом игнорируется информация, содержащаяся в фазовом спектре. Эта же функция позволяет получить минимально-фазовую реконструкцию сигнала. Нули z -преобразования последовательности отсчетов такого сигнала лежат на комплексной плоскости внутри единичной окружности, а его кепстр совпадает с кепстром исходного сигнала.

Комплексный кепстр, вычисляемый с помощью функции cceps , учитывает как амплитудную, так и фазовую информацию, поэтому его связь с исходным сигналом является взаимно-однозначной. Обратное преобразование, то есть вычисление сигнала по известному комплексному кепстру, выполняется функцией icceps .

Изменение частоты дискретизации

К преобразованиям можно отнести и группу функций, осуществляющих изменение частоты дискретизации сигнала. Наиболее часто частоту дискретизации необходимо изменять в целое число раз. В случае увеличения частоты дискретизации данная операция называется интерполяцией , а в случае уменьшения - прореживанием (decimation). Любой пересчет частоты дискретизации требует последовательного выполнения нескольких действий. В пакете Signal Processing имеются функции, реализующие как отдельные действия, так и необходимые их последовательности.

Для выполнения интерполяции между отсчетами сигнала вставляется требуемое количество нулей (функция upsample ), затем полученный сигнал пропускается через фильтр нижних частот. Вместе эти два этапа реализуются функцией interp .

Для выполнения прореживания сигнал пропускается через фильтр нижних частот, а затем из него выбирается каждый N -й отсчет (функция downsample ). Вместе эти два этапа реализуются функцией decimate .

Комбинация операций интерполяции и прореживания позволяет изменять частоту дискретизации с коэффициентом, выражающимся произвольной рациональной дробью. Для повышения эффективности вычислений такой пересчет выполняется специализированной функцией resample , а она, в свою очередь вызывает функцию upfirdn (вставка нулей, фильтрация и прореживание). Основное различие между этими двумя функциями состоит в том, что upfirdn позволяет задавать импульсную характеристику используемого фильтра, а при использовании функции resample фильтр рассчитывается автоматически.

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

В качестве примера выполним интерполяцию сигнала, использованного выше для демонстрации функций pulstran и sinc , повысив частоту дискретизации в четыре раза. По краям сигнала добавлены нулевые отсчеты, поскольку функция interp требует, чтобы длина исходной последовательности была не менее девяти отсчетов.

sd = ; % исходный сигнал
t = 0:9; % дискретное время для исходного сигнала
sd4 = interp(sd, 4); % интерполяция
t4 = (0:39)/4; % дискретное время для интерполированного сигнала
stem(t, sd) % график исходного сигнала
hold on
plot(t4, sd4, "x") % график интерполированного сигнала
hold off

На приведенном графике исходный сигнал показан “стебельками”, а интерполированный - крестиками.

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

Функция buffer позволяет представлять вектор отсчетов сигнала в матрицу последовательных кадров, причем эти кадры могут перекрываться.

Функции mod и demod осуществляют соответственно модуляцию и демодуляцию. Поддерживаются следующие виды модуляции: амплитудная, амплитудная с подавленной несущей, однополосная, фазовая, частотная, квадратурная, широтно-импульсная, время-импульсная.

Функции uencode и udecode реализуют соответственно равномерное квантование и восстановление сигнала по номерам уровней квантования.

Функция strips предназначена для вывода графика сигнала в несколько строк. Это бывает полезно, если необходимо охватить взглядом длинный сигнал целиком, а разрешение по вертикальной оси не имеет большого значения.

Семейство функций, имена которых начинаются с символов dpss , предназначено для расчета дискретных вытянутых сфероидальных функций и работы с базой данных, предназначенной для хранения рассчитанных функций. Дискретные вытянутые сфероидальные функции используются при спектральном анализе методом Томсона (см. выше раздел “Функции спектрального анализа и статистической обработки сигналов”, подраздел “Непараметрические методы”).

Функции cell2sos и sos2cell позволяют хранить информацию о фильтре, представленном в виде последовательно включенных секций второго порядка, не только в виде матрицы, но и в виде массива ячеек. Эти две функции осуществляют преобразование представления между указанными двумя формами.

Функция specgram осуществляет расчет спектрограммы сигнала, то есть спектров последовательных фрагментов сигнала, выделяемых с помощью скользящего окна. Результаты вычислений могут возвращаться в виде матрицы либо отображаться цветом в координатах “время-частота”.

Функция cplxpair выделяет комплексно-сопряженные пары в векторах комплексных чисел.

Функция eqtflength позволяет выровнять длины двух векторов путем дополнения более короткого из них нулями в конце.

Функция seqperiod предназначена для проверки элементов вектора на периодичность и определение периода их повторения.

Программа синтеза и анализа фильтров FDATool (Filter Design & Analysis Tool) является оболочкой для вызова функций синтеза и анализа дискретных фильтров. При наличии пакета Filter Design Toolbox данная программа также позволяет анализировать эффекты, связанные с квантованием коэффициентов фильтров, и производить преобразования типов фильтров (ФНЧ в ФВЧ и т. п.).

Программа позволяет не только рассчитывать фильтры “с нуля”, но также сохранять и загружать сеансы работы, редактировать ранее сохраненные фильтры. Кроме того, можно импортировать описание фильтра из рабочей области MATLAB или из файлов формата XILINX CORE Generator (*.coe). Импортированные фильтры можно только анализировать.

При анализе можно просматривать следующие характеристики фильтров (в последних версиях пакета можно просматривать несколько графиков одновременно):

  • Амплитудно-частотную характеристику (АЧХ).
  • Фазочастотную характеристику (ФЧХ).
  • АЧХ и ФЧХ одновременно.
  • Групповую задержку.
  • Фазовую задержку.
  • Импульсную характеристику.
  • Переходную характеристику.
  • Расположение нулей и полюсов на комплексной плоскости.
  • Коэффициенты фильтра.
  • Информацию о структуре фильтра.

Рассчитанный фильтр можно использовать следующим образом:

  • Сохранить сеанс работы для последующей загрузки в программу FDATool с целью дальнейшего редактирования и анализа.
  • Экспортировать в рабочую область MATLAB.
  • Экспортировать в текстовый файл.
  • Экспортировать в MAT-файл.
  • Экспортировать в заголовочный (*.h) файл языка C.
  • Экспортировать в программу SPTool (см. далее).

На приведенном ниже рисунке показан вид окна программы FDATool с результатами расчета эллиптического фильтра нижних частот методом билинейного z-преобразования. Отображаются графики АЧХ и групповой задержки.

Программа обработки сигналов SPTool (Signal Processing Tool) позволяет выполнять следующие операции: импортировать сигналы из MAT-файлов или рабочей области MATLAB; просматривать графики сигналов (в том числе нескольких одновременно); применять к сигналам различные методы спектрального анализа и просматривать полученные графики; рассчитывать дискретные фильтры с использованием функций пакета (в том числе путем прямого редактирования расположения нулей и полюсов); пропускать сигналы через фильтры и анализировать получающиеся выходные сигналы.

Следует отметить, что в части анализа и синтеза фильтров возможности программы SPTool являются более узкими, чем у программы FDATool (единственным исключением является отсутствующая в FDATool возможность прямого редактирования расположения нулей и полюсов). Впрочем, эти ограничения компенсируются возможностью экспорта рассчитанного фильтра из FDATool в SPTool.

На приведенных ниже рисунках показан вид окна программы SPTool при просмотре графика сигнала, при анализе спектра и при редактировании расположения нулей и полюсов фильтра.

Появившаяся в версии пакета 6.0 (R13) программа синтеза и анализа весовых (оконных) функций WinTool (Window Design and Analysis Tool) является оболочкой для вызова имеющихся в пакете функций расчета окон. При этом демонстрируются характеристики окна (или нескольких окон одновременно) во временной и частотной областях.

На приведенном ниже рисунке показан вид окна программы WinTool с результатами расчета окна Чебышева 64-го порядка с уровнем боковых лепестков спектра –100 дБ. Отображаются график окна во временной области и его спектр.

Цифровая обработка сигналов и MATLAB, Солонина А.И., Клионский Д.М., Меркучева Т.В., Перов С.Н., 2013.

Описываются базовые методы и алгоритмы цифровой обработки сигналов и средств их компьютерного моделирования в системе MATLAB. Даны основы алгоритмического языка MATLAB. Рассматриваются дискретные сигналы, линейные дискретные системы, дискретное преобразование Фурье с использованием алгоритмов БПФ, синтез и анализ КИХ- и БИХ-фильтров, в том числе с фиксированной точкой, спектральный анализ сигналов, многоскоростная обработка сигналов и адаптивная цифровая фильтрация. Технология обучения в процессе компьютерного моделирования на основе созданных авторами программ или графического интерфейса пользователя MATLAB расширяет теоретические знания и позволяет понять многие важные проблемы и аспекты практического применения методов и алгоритмов ЦОС. На прилагаемом CD хранятся обучающие программы и таблицы исходных данных.
Для студентов, аспирантов и преподавателей вузов, а также специалистов в области цифровой обработки сигналов

2.4. Задание на самостоятельную работу
Самостоятельное задание рекомендуется для закрепления полученных знаний и включает в себя следующие пункты:
. Операции с матрицами.
Привести пример арифметического выражения, в котором все переменные и результат вычисления - матрицы.
Вычислить статистические характеристики и нормы результирующей матрицы.
. Обращение, транспонирование и эрмитово сопряжение матрицы.
Выполнить для матрицы Теплица 5-го порядка.
ЗС . Решение СЛАУ:

Оглавление
Предисловие.,
ЧАСТЬ 1 ЗНАКОМСТВО С MATLAB.
Глава I. Знакомство с MATLAB. Основные объекты и пики MATLAB.
1.1. Краткая теоретическая справка.
1.1.1. Режим прямых вычислений.
1.1.2. Базовые объекты языка MATLAB.
1.1.3. Рабочая область памяти Workspace.
1.1.4. Сохранение данных на диске.
1.2. Содержание лабораторной работы.
1.3. Задание на лабораторную работу.
1.4. Задание на самостоятельную работу.
1.5. Отчет и контрольные вопросы.
1.6. Литература.
Глава 2. Операции с матрицами.
2.1. Краткая теоретическая справка.
2.1.1. Функции генерации типовых матриц.
2.1.2. Преобразование матриц.
2.1.3. Поэлементные операции с матрицами.
2.1.4. Операции с матрицами в задачах линейной алгебры.
2.1.4.1. Арифметические операции с матрицами.
2.1.4.2. Транспонирование и эрмитово сопряжение матриц.
2.1.4.3. Обращение матриц.
2.1.4.4. Матричное деление.
2.1.5. Норма матрицы и вектора.
2.1.6. Операции с матрицами в задачах математической статистики.
2.2. Содержание лабораторной работы.
2.3.Задание - на лабораторную работу*.
2.4. Задание на самостоятельную работу.
2.5. Отчет и контрольные вопросы.
2.6. Литература.
Глава 3. Типы массивов.
3.1. Краткая теоретическая справка.
3.1.1. Матрицы числового и логического типов.
3.1.2. Матрицы символьного типа.
3.1.3. Структуры (массивы записей).
3.1.4. Массивы ячеек.
3.1.5. Определение типа массива.
3.2. Содержание лабораторной работы.
3.3. Задание - на лабораторную работу*.
3.4. Задание на самостоятельную работу*.
3.5. Отчет и контрольные вопросы.
3.6. Литература.
Глава 4. Средства графики.
4.1. Краткая теоретическая справка.
4.1.1. Двумерные графики.
4.1.2. Управление свойствами двумерных графиков.
4.1.3. Трехмерные графики.
4.1.4. Управление свойствами трехмерных графиков.
4.2. Содержание лабораторной работы.
4.3. катание на лабораторную работу.
4.4. -Задание на самостоятельную работу.
4.5. Отчет и контрольные вопросы.
4.6. Литература.
Глава 5. Режим Программирования: script файлы и function-файлы.
5.1. Краткая теоретическая справка.
5.1.1. Script-файлы.
5.1.2. Function-файлы.
5.1.3. Оформление и вывод листинга М-файлов.
5.1.4. Ввод/вывод данных.
5.1.5. Пауза и досрочное прерывание программы.
5.1.6. Создание и хранение М-файлов.
5.2. Содержание лабораторной работы.
5.3. катание на лабораторную работу.
5.4. -Задание на самостоятельную работу.
5.5. Отчет и контрольные вопросы.
5.6. Литература.
Глава 6. Режим программирования: организации разветвлений и циклов.
6.1. Краткая теоретическая справка.
6.1.1. Операторы организации разветвлений.
6.1.2. Операторы организации циклов.
6.2. Содержание лабораторной работы.
6.3. катание на лабораторную работу.
6.4. -Задание на самостоятельную работу.
6.5. Отчет и контрольные вопросы.
6.6. Литература.
ЧАСТЬ II. МОДЕЛИРОВАНИЕ ЦИФРОВОЙ ОБРАБОТКИ СИГНАЛОВ BMATLAB.
Глава 7. Дискретные сигналы.
7.1. Краткая теоретическая справка.
7.1.1. Детерминированные дискретные сигналы.
7.1.2. Случайные дискретные сигналы.
7.2. Содержание лабораторной работы.
7.3. катание на лабораторную работу.
7.4. Типовой script-файл для выполнения лабораторной работы.
7.5. Задание на самостоятельную работу.
7.6. Отчет и контрольные вопросы.
7.7. Литература.
Глава 8. Линейные дискретные сигналы.
8.1. Краткая теоретическая справка.
8.1.1. Описание ЛДС во временной области.
8.1.2. Описание ЛДС в z-области.
8.1.3. Описание ЛДС в частотной области.
8.1.4. Структуры звеньев 2-го порядка.
8.2. Содержание лабораторной работы.
8.3. Задание на лабораторную работу*.
8.4. Типовой script-файл для выполнения лабораторной работы.
8.4.1. Используемые внешние функции.
8.5. качание на самостоятельную работу*.
8.6. Отчет и контрольные вопросы.
8.7. Литература.
Глава 9. Дискретное преобразование Фурье (часть1).
9.1. Краткая теоретическая справка.
9.1.1. Дискретное преобразование Фурье.
9.1.2. Выделение дискретных гармоник полезного сигнала.
9.1.3. Восстановление спектральной плотности.
9.1.4. Восстановление аналогового сигнала.
9.2. Содержание лабораторной работы.
9.3. Задание на лабораторную работу*.
9.4. Типовой script-файл для выполнения лабораторной работы.
9.4.1. Используемые внешние функции.
9.5. качание на самостоятельную работу.
9.6. Отчет и контрольные вопросы.
9.7. Литература.
Глава 10. Дискретное преобразование Фурье (часть2).
10.1. Краткая теоретическая справка.
10.1.1. Растекание спектра.
10.1.2. Улучшение различения дискретных гармонике близко расположенными частотами.
10.1.3. Вычисление линейных и круговых сверток с помощью ДПФ.
10.1.4. Вычисление секционированных сверток с помощью ЛПФ.
10.2. Содержание лабораторной работы.
10.3. Задание на лабораторную работу.
10.4. Типовой script-файл для выполнения лабораторной работы.
10.4.1. Используемые внешние функции.
10.5. Задание на самостоятельную работу.
10.6. Отчет и контрольные вопросы.
10.7. Литература.
Глава 11 Синит КИХ-фильтров методом окон.
11.1. Краткая теоретическая справка.
11.1.1. Свойства КИХ-фильтров.
11.1.2. Задание требований к ЛЧХ.
11.1.3. Структуры КИХ-фильтров.
11.1.4. Процедура синтеза КИХ-фильтров методом окон.
11.1.5. Синтез КИХ-фильтров методом окон в МЛТ1-ЛВ.
11.2. Содержание лабораторной работы.
11.3. Задание на лабораторную работу.
11.4. Типовой script-файл для выполнения лабораторной работы.
11.4.1. Синтез и анализ КИХ -фильтра ФНЧ.
11.4.2. Синтез и анализ КИХ-фильтра ФВЧ.
11.4.3. Синтез и анализ КИХ-фильтра ПФ.
11.4.4. Синтез и анализ КИХ-фильтра РФ.
11.4.5. Используемые внешние функции.
11.5. Задание на самостоятельную работу.
11.6. Отчет и контрольные вопросы.
11.7. Литература.
Глава 12. Синтез КИХ-фильтров методом наилучшей равномерной (чебышевской) аппроксимации.
12.1. Краткая теоретическая справка.
12.1.1. Процедура синтеза КИХ-фильтров методом чебышевской аппроксимации.
12.1.2. Синтез КИХ-фильтров методом чебышевской аппроксимации в MATLAB.
12.1.3. Описание требований к характеристике затухания в виде объекта fdesign.
12.1.4. Синтез КИХ-фильтров в виде объектов dfild на основе объектов fdesign.
12.2. Содержание лабораторной работы.
12.3. Задание на лабораторную работу.
12.4. Типовой script-файл для выполнения лабораторной работы.
12.4.1. Синтез и анализ КИХ-фильтра ФИЧ.
12.4.2. Синтез и анализ КИХ -фильтра ФВЧ.
12.4.3. Синтез и анализ КИХ-фильтра ПФ.
12.4.4. Синтез и анализ КИХ-фильтра РФ.
12.4.5. Используемые внешние функции.
12.5. Задание на самостоятельную работу.
12.6. Отчет и контрольные вопросы.
12.7. Литература.
Глава 13.Синтез БИХ-фильтров методом билинейного Z - преобразования.
13.1. Краткая теоретическая справка.
13.1.1. Задание требований к характеристике затухания.
13.1.2. Структуры БИХ-фильтров.
13.1.3. Процедура синтеза БИХ-фильтров методом билинейного Z-преобразования.
13.1.4. Синтез аналоговых фильтров в МАТГАВ.
13.1.5. Синтез БИХ-фильтров методом билинейного Z-преобразования в MATLAB.
13.1.6. Синтез БИХ-фильтров в виде объектов dfild на основе объектов /design.
13.1.7. Расстановка звеньев и масштабирование в каскадных структурах БИХ-фильтров.
13.2. Содержание лабораторной работы.
13.3. Задание на лабораторную работу.
13.4. Типовой script-файл для выполнения лабораторной работы.
13.4.1. Синтез и анализ БИХ -фильтра ФИЧ.
13.4.2. Синтез и анализ БИХ-фильтра ФВЧ.
13.4.3. Синтез и анализ БИХ-фильтра ПФ.
13.4.4. Синтез и анализ БИХ-фильтра РФ.
13.4.5. Используемые внешние функции.
13.5. Задание на самостоятельную работу.
13.6. Отчет и контрольные вопросы.
13.7. Литература.
Глава 14. Синтез цифровых фильтров средствами GUI FDAT Tool и FilterBuilder.
14.1. Краткая теоретическая справка.
14.1.1. Синтез цифровых фильтров в GUI FDATool.
14.1.2. Экспорт из GUI FDATool в Workspace.
14.1.3. Синтез цифровых фильтров в FillerBuilder GUI.
14.2. Содержание лабораторной работы.
14.3. Задание на лабораторную работу.
14.4. Задание на самостоятельную работу.
14.5. Отчет и контрольные вопросы.
14.6. Литература.
Глава 15. Цифровые фильтры с фиксированной точкой.
15.1. Краткая теоретическая справка.
15.1.1. Эффекты квантования в структуре ЦФс ФТ.
15.1.2. Моделирование структуры исходного ЦФ в GUI FDATool.
15.1.3. Моделирование структуры ЦФ с ФТ в GUI FDATool.
15.1.3.1. Установка свойств ЦФ с ФТ на вкладке Coefficients.
15.1.3.2. Установка свойств ЦФ с ФТ на вкладке Inpul/Outpul.
15.1.3.3. Установка свойств ЦФ с ФТ на вкладке Filler Internals.
15.1.4. Моделирование структуры ЦФ с ФТ FilterBuilder GUI.
15.2. Содержание лабораторной работы.
15.3. Задание на лабораторную работу.
15.4. Задание на самостоятельную работу.
15.5. Отчет и контрольные вопросы.
15.6. Литература.
Глава 16. Спектральный анализ: непараметрические методы.
16.1. Краткая теоретическая справка.
16.1.1. Метод периодограмм.
16.1.2. Основные показатели качества оценок СПМ.
16.1.3. Метод периодограмм Даньелла.
16.1.4. Метод периодограмм Бартлетта.
16.1.5. Метод периодограмм Уэлча.
16.1.6. Метод Блэкмана Тьюки.
16.1.7. Моделирование случайной последовательности с требуемой ЛКФ.
16.1.8. Основные параметры окон.
16.1.9. Спектрограмма.
16.2. Содержание лабораторной работы.
16.3. Задание на лабораторную работу.
16.4. Типовой script-файл для выполнения лабораторной работы.
16.5. Задание на самостоятельную работу.
16.6. Отчет и контрольные вопросы.
16.7. Литература.
Глава 17. Спектральный анализ: параметрические методы.
17.1. Краткая теоретическая справка.
17.1.1. АРСС-, АР- и СС-модели.
17.1.2. Метод Юла-Уолкера (автокорреляционный) оценки параметров АР-модели.
17.1.3. Методы оценки параметров АР-модели.
17.1.4. Методы оценки СПМ.
17.1.5. Оценка порядка АР-модели.
17.1.6. Сравнение оценок СПМ с истинной СПМ.
17.2. Содержание лабораторной работы.
17.3. Задание на лабораторную работу.
17.4. Типовой script-файл для выполнения лабораторной работы.
17.5. Задание на самостоятельную работу.
17.6. Отчет и контрольные вопросы.
17.7. Литература.
Глава 18. Спектральный анализ средствами GUI SPTool.
18.1. Краткая теоретическая справка.
18.1.1. Обращение к GUI SPTool.
18.1.2. Сигналы: группа Signals.
18.1.3. Моделирование системы цифровой фильтрации: группа Filters.
18.1.4. Спектральный анализ: группа Spectra.
18.1.5. Экспорт данных из GUI SPTool.
18.2. Содержание лабораторной работы.
18.3. Задание на лабораторную работу.
18.4. Задание на самостоятельную работу.
18.5. Отчет и контрольные вопросы.
18.6. Литература.
Глава 19. Многоскоростные системы ЦОС.
19.1. Краткая теоретическая справка.
19.1.1. Система однократной интерполяции.
19.1.2. Система однократной децимации.
19.1.3. Система однократной передискретизации.
19.1.4. Полифазные структуры многоскоростных систем.
19.2. Содержание лабораторной работы.
19.3. Задание на лабораторную работу.
19.4. Типовой script-файл для выполнения лабораторной работы.
19.5. Задание на самостоятельную работу.
19.6. Отчет и контрольные вопросы.
19.7. Литература.
Главе 20. Моделирование полифазных структур многоскоростных систем средствами GUI FDATool и FilterBuilder.
20.1. Краткая теоретическая справка.
20.1.1. Моделирование полифазных структур в GUI FDATool.
20.1.2. Моделирование полифазных структур в FilterBuilder GUI.
20.1.3. Моделирование многоскоростных систем с полифазными структурами.
20.2. Содержание лабораторной работы.
20.3. Задание на лабораторную работу.
20.4. Типовой script-файл для выполнения лабораторной работы.
20.4.1. Система однократной интерполяции с полифазной структурой.
20.4.2. Система однократной децимации с полифазной структурой.
20.4.3. Система однократной передискретизации с полифазной структурой
при повышении частоты дискретизации.
20.4.4. Система однократной передискретизации с полифазной структурой
при понижении частоты дискретизации.
20.5. Задание на самостоятельную работу.
20.6. Отчет и контрольные вопросы.
20.7. Литература.
Глава 21. Адаптивные фильтры.
21.1. Краткая теоретическая справка.
21.1.1. Фильтр Винера.
21.1.2. Алгоритм 1.MS.
21.1.3. Алгоритм RLS.
21.1.4. Применение адаптивных фильтров.
21.1.4.1. Идентификация систем.
21.1.4.2. Оценка импульсной характеристики неизвестной системы.
21.1.4.3. Очистка сигнала от шума.
21.1.4.4. Выравнивание частотной характеристики неизвестной системы.
21.2.4.5. Оценка параметров линейного предсказания сигнала.
21.2. Содержание лабораторной работы.
21.3. Задание на лабораторную работу.
21.4. Типовой script-файл для выполнения лабораторной работы.
21.5. Задание на самостоятельную работу.
21.6. Отчет и контрольные вопросы.
21.7. Литература.
Список сокращений на английском языке.
Список сокращений на русском языке.
Предметный указатель.