Практика використання цифрових фільтрів Цифрові фільтри Методи реалізації та синтезу фільтрів Проектування цифрових фільтрів

Роблю тут проект і виникла якась проблема. Отримую дані з АЦП (дельта-сигма) мікросхеми в яку вбудований контролер і фільтр, але цей фільтр має досить убогу АЧХ, в результаті йде завал по ВЧ від 60Гц і далі. Виглядає це приблизно так:

Тобто. така нерівномірність АЧХ нас явно не влаштовує (не проходить по технічним вимогам), Правда є можливість підвищити частоту дискретизації з 250Гц до 500Гц, щоб вирівняти АЧХ, проте тоді збільшується обсяг даних який ще потрібно буде усереднювати, що позначиться на продуктивності (проект на STM32F103VE) системи в цілому та на загальному споживанні енергії (батарейне живлення). Але є й інший шлях.

Можна вирівняти АЧХ за допомогою цифрового параметричного фільтра, в даному випадку ВЧ. Тобто це теж що еквалайзер, ми піднімаємо одні частоти, а інші не чіпаємо (або завалюємо). Такий метод, звичайно, хороший, але т.к. ми намагаємося відновити інформацію, частина якої було знищено іншим фільтром на вході (тобто у мікросхемі), неминуче збільшиться рівень перешкод на високих частотах, т.к. разом із сигналом ми посилимо також і їх, але наскільки?

Тож ідея вирішення проблеми є, залишилася реалізація. Що ми пам'ятаємо про цифрові фільтри (до тих, хто не мав з ними практики) з університетського курсу? Хіба такі слова як згортка, Z-перетворення, імпульсна характеристика і т.д. Загалом не зрозуміло з якого кінця підходити навіть, начебто треба якісь коефіцієнти розраховувати, але що й навіщо незрозуміло, піднімати курс і сидіти з книгами ЦОС (є одна на 800 сторінок) немає часу, проект варто і треба щось робити і швидко.

Тому трохи погуглів знаходимо такий ресурс в інтернеті. Це сайт з розрахунку цифрових фільтрів (і не тільки!) он-лайн, а зробив його Dr Anthony J. Fisher.

Отже задаємося вимогами, які нам потрібні і вводимо на сайті. По-перше, нам потрібна плавна характеристика, тому однозначно Баттерворт першого порядку ВЧ (highpass). По-друге, sample rate, тобто. кількість перетворень АЦП за секунду, або частота дискретизації, у нас це 250Гц. Вводимо. І, нарешті, по-третє, частота зрізу (-3дБ) - 50Гц, т.к. фільтр на вході ріже приблизно тут. Натискаємо відправити і отримуємо таку характеристику нашого майбутнього фільтра:


Червоним представлений графік амплітуди від частоти Найквіста, синій зміна фази. 0,5 відповідає половині частоти дискретизації.

Також отримуємо код з розрахованими коефіцієнтами:
#define NZEROS 1 #define NPOLES 1 #define GAIN 1.726542528e+00 static float xv, yv; static void filterloop() ( for (;;) ( xv = xv; xv = next input value / GAIN; yv = yv; yv = (xv - xv) + (0.1583844403 * yv); next output value = yv; ) )
Але це тільки фільтр, пам'ятаємо, що нам потрібно посилити частоти від 50Гц і вище, щоб випрямити АЧХ, і ця функція в такому вигляді нам не допоможе, тому шляхом нехитрих маніпуляцій наводимо функцію такого виду:
#define NZEROS 1 #define NPOLES 1 #define GAIN 1.726542528e+00F #define OUR_GAIN 2.1F // наш коеф. посилення фільтра float xv, yv; int void filterloop(int data) (xv = xv; xv = (float)data / GAIN; yv = yv; yv = (xv - xv) + (0.1583844403F * yv); return (int)((yv0 * OUR_GAIN) + (float)data);

Всі. Щоб використовувати фільтр, кидаємо дані в параметри функції, а повертає вона відфільтровані дані. Коефіцієнт посилення OUR_GAIN підбираємо дослідним шляхом, знімаючи показання з АЦП та заміряючи АЧХ.

Таким чином мені вдалося підняти АЧХ практично без додаткового навантаження на контролер і мій проект пройшов за технічними вимогами (в медичній області вони не дуже кволі). Я боявся, що зросте рівень перешкод, але він збільшився з 4-5мкВ приблизно до 6-8мкВ, що нас влаштовує. На закінчення можу порекомендувати ще одну безкоштовну програму з розрахунку цифрових фільтрів - WinFilter, завантажити її можна. Наскільки вона працездатна не знаю, не перевіряв, але вона може видавати код у VHDL (і в З природно), що напевно стане в нагоді для ПЛІС. Також є програма від Texas Instuments, за розрахунком коефіцієнтів цифрових фільтрів, називається вона TIBQ. Всі. Успіхів у проектуванні цифрових фільтрів.

У запропонованому циклі «Моделювання ЦГЗ цифрової обробки сигналів у MATLAB» попередні статті були присвячені моделюванню цифрових фільтрів (ЦФ), КІХ та БІХ, у тому числі з фіксованою точкою (ФТ), програмними засобами MATLAB.

Література

  1. Ingle V., Proakis J. Digital Signal Processing Using MATLAB. Second Edition. Thomson, 2006.
  2. Оппенгейм А. Шафер Р. Цифрова обробка сигналів. М: Техносфера, 2006.
  3. Сергієнко А. Б. Цифрова обробка сигналів. 2-ге вид. СПб.: ПІТЕР, 2006.
  4. Солоніна А. І., Улахович Д. А., Арбузов С. М., Соловйова Є. Б. Основи цифрової обробки сигналів. 2-ге вид. СПб.: БХВ-Петербург, 2005.
  5. Солоніна А. І., Арбузов С. М. Цифрова обробка сигналів. Моделювання у MATLAB. СПб.: БХВ-Петербург, 2008.
  6. Солоніна А. Моделювання цифрової обробки сигналів у MATLAB. Частина 1. Синтез оптимальних (за Чебишевим) КІХ-фільтрів програмними засобами MATLAB // Компоненти та технології. 2008. № 11.
  7. Солоніна А. Моделювання цифрової обробки сигналів у MATLAB. Частина 2. Синтез оптимальних БІХ-фільтрів програмними засобами MATLAB // Компоненти та технології. 2008. № 12.
  8. Солоніна А. Моделювання цифрової обробки сигналів у MATLAB. Частина 3. Опис структур КІХ- та БІХ-фільтрів у MATLAB // Компоненти та технології. 2009. №1.
  9. Солоніна А. Моделювання цифрової обробки сигналів у MATLAB. Частина 4. Моделювання структур цифрових фільтрів із фіксованою точкою програмними засобами MATLAB: аналіз характеристик КІХ-фільтрів // Компоненти та технології. 2009. №2.
  10. Солоніна А. Моделювання цифрової обробки сигналів у MATLAB. Частина 5. Моделювання структур цифрових фільтрів із фіксованою точкою програмними засобами MATLAB: аналіз характеристик БІХ-фільтрів // Компоненти та технології. 2009. №3.
  11. Солоніна А. Моделювання цифрової обробки сигналів у MATLAB. Частина 6. Моделювання структур цифрових фільтрів із фіксованою точкою програмними засобами MATLAB: квантування впливу та обчислення реакції // Компоненти та технології. 2009. №4.
1 У групі Current Filter Information цьому відповідає повідомлення: Source-Designed.
2 У групі Current Filter Information цьому відповідає повідомлення: Source-Imported.

Професійний програмний пакет для створення та аналізу активних/пасивних аналогових, а також цифрових електричних фільтрів.

Filter Solutions має простий і зрозумілий інтерфейс, що представляє собою набір окремих вікон для завдання необхідних значень проектованого фільтра і відображення результатів, що вийшли, і їх характеристик. Софт має своє власне обчислювальне ядро. Оптимізовані розрахункові алгоритми дають змогу виконувати складні математичні операції за короткі проміжки часу.

Програма Filter Solutions здатна будувати стандартні фільтри (еліптичний або Кауера, Бесселя, Баттерворта, Гаусса, Лежандра, Чебишева 1 і 2 роди, узгоджений і деякі інші), а також унікальні фільтри з параметрами, що гнучко налаштовуються, з вільно заданою частотною характеристикою для створення ланцюгів та амплітудної корекції. Програма автоматично будує передатну функцію, показує полюси та нулі, а також генерує часові характеристики схеми при впливі на неї імпульсом. Для швидкого створення фільтра призначений майстер, якому потрібні лише найважливіші дані щодо розробки.

Також існує можливість вказувати частотні характеристики проектованого пристрою, нулі та полюси. Filter Solutions самостійно встановить порядок фільтру та необхідну топологію. Програма дозволяє розробляти фільтри у смужковому/мікросмужковому виконанні. Розрахунок враховуватиме втрати в металізації та в діелектриці підкладки.
Особливістю програмного пакета є надання кількох можливих способів вирішення задачі у вигляді різних схемотехнічних рішень та параметрів окремих елементів. У Filter Solutions здійснюється контроль технологічної реалізованості схеми. Програма вкаже на можливі проблеми та запропонує альтернативні варіанти, які мають дещо гірші параметри, але можливі для виконання.

Можливості Filter Solutions також доступні у вигляді версій Filter Light та Filter Free, які мають нижчу вартість порівняно з повною версією програми. Набір функцій у них дещо спрощений, особливо в Filter Free, що є мінімально доступною комплектацією.
Системні вимоги до цього софту невеликі. Програма поширюється у вигляді звичайної та Portable версії, що працює з будь-якого зовнішнього накопичувача.

Filter Solutions є розробкою компанії Nuhertz Technologies http://www.nuhertz.com/. Її штаб-квартира розташована в місті Феніксі (США, штат Арізона). Спочатку пакет було випущено 1999 року. З того часу він продовжує розвиватися і обростати все новими функціями та можливостями. Програмне забезпечення, що розробляється компанією, використовується інженерами-конструкторами в різних галузях науки і промисловості, таких як зв'язок і комунікації, військова електроніка, медицина, приладобудування, нафтова і газова сфера, проектування антен. Nuhertz Technologies також є творцем Statmat та Spectra – програм для статистичного аналізу та цифрового представлення даних.

Мова інтерфейсу Filter Solutions є лише англійською. Робоча платформа цієї програми – Windows 9x/Me/2K/NT/XP/Vista/7.

А.Б.Сергієнко. 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) (звісно, ​​не шляхом взяття межі, а усередненням кінцевого числа доданків). Якщо при розрахунку спектра використовується вагова функція (вікно), то оцінка спектра потужності називається модифікованою періодограмою(Змінений період):

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

У пакеті Signal Processing обчислення періодограми (у тому числі модифікованої) здійснюється за допомогою функції periodogram.

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

Обчислення при використанні методу Уелча (він називається ще методом усереднення модифікованих періодограм - .

Метод Уелча є найпопулярнішим періодограмним методом спектрального аналізу. У пакеті Signal Processing він реалізується за допомогою функції pwelch.

Метод Томсона, реалізований функцією pmtm, заснований на використанні витягнутих сфероїдальних функцій(Prolate сферичні функції). Ці функції кінцевої тривалості забезпечують максимальну концентрацію енергії заданої смузі частот. Крім власне спектральної оцінки, функція 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 при перегляді графіка сигналу, при аналізі спектра та при редагуванні розташування нулів та полюсів фільтра.

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

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