y = decimate (x, r)
y = decimate (x, r, n)
y = decimate (x, r, 'fir')
y = decimate (x, r, n, 'fir')
Процедура проріджування, на противагу інтерполяції, знижує частоту дискретизації сигналу. Процес проріджування зводиться до пропускання вихідного сигналу через фільтр нижніх частот (ФНЧ) і подальшого відкидання зайвих відліків.
Знижує частоту дискретизації сигналу x в r разів. Довжина зріджені вектора y в r разів менше, ніж довжина вихідного вектора x. За замовчуванням функція decimate використовує ФНЧ Чебишева першого роду восьмого порядку. Для усунення фазових спотворень проводиться двунаправленная фільтрація сигналу (див. Опис функції filtfilt), так що результуючий порядок фільтра подвоюється.
Те ж, що перший варіант синтаксису, але використовується фільтр Чебишева порядку n. Використовувати фільтри більш ніж 13-го порядку не рекомендується через чисельної нестабільності. При завданні занадто високого порядку MATLAB виводить відповідне попередження.
Те ж, що перший варіант синтаксису, але замість рекурсивного фільтра Чебишева використовується нерекурсивний фільтр 30-го порядку, що розраховується за допомогою функції fir1. В даному випадку фільтрація здійснюється тільки в одному напрямку, оскільки такий нерекурсивний фільтр не вносить фазових спотворень. Даний варіант синтаксису забезпечує меншу витрату пам'яті і корисний при обробці довгих сигналів.
Те ж, що попередній варіант синтаксису, але використовується нерекурсивний фільтр порядку n.
Зробимо чотириразове проріджування сигналу:
Виведемо графіки вихідного і зріджені сигналів:
Функція decimate використовує алгоритми проріджування 8.2 і 8.3 з [1]:
- Проводиться розрахунок фільтра нижніх частот. За замовчуванням функція decimate використовує фільтр Чебишева першого роду (функція cheby1) з нормованою частотою зрізу 0.8 / r і пульсаціями АЧХ в смузі пропускання, рівними 0,05 дБ. При виборі варіанту 'fir' функція decimate розраховує нерекурсивний фільтр нижніх частот з нормованою частотою зрізу 1 / r за допомогою функції fir1.
- У разі нерекурсівние фільтра виробляється фільтрація вхідного сигналу в одному напрямку. У разі рекурсивного фільтра проводиться двунаправленная фільтрація сигналу за допомогою функції filtfilt.
- Проводиться власне проріджування фільтрованої сигналу шляхом вибірки кожного r-го відліку.
Якщо значення r не є цілим числом, функція decimate видає таке повідомлення про помилку:
Якщо заданий порядок рекурсивного фільтра n перевищує 13, функція decimate видає наступне попередження:
- IEEE. Programs for Digital Signal Processing. IEEE Press. New York: John Wiley Sons, 1979. Chapter 8.