Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ЦОС (последний вариант).doc
Скачиваний:
18
Добавлен:
21.08.2019
Размер:
1.07 Mб
Скачать

3.2. Теорія та апроксимація цифрових фільтрів з нескінченними імпульсними характеристиками

Формули сигналів, що детально й точно описують певні фізичні об’єкти і процеси, можуть бути дуже складними й мало придатними для практичного використання, як для математичного аналізу фізичних даних, так і в прикладних завданнях, особливо під час розрахунків очікуваних результатів вимірів і при математичному моделюванні фізичних процесів. Крім того, практична реєстрація фізичних даних виконується, як правило, з певною погрішністю або з певним рівнем шумів, які за своїми значеннями можуть бути вищими за теоретичну погрішність прогнозування сигналів під час розрахунків за складними, хоча й дуже точними формулами. Не має особливого смислу й проектування систем обробки й аналізу сигналів за високоточними формулами, якщо підвищення точності розрахунків не дає відчутного ефекту в підвищенні точності обробки даних. У всіх цих умовах виникає завдання апроксимації – подання довільних складних функцій простими й зручними для практичного використання функціями таким чином, щоб відхилення від в області її завдання було найменшим за певним критерієм наближення. Функції одержали назву функцій апроксимації.

Точки, в яких визначені дискретні значення функцій або даних, називаються вузловими. На практиці можуть знадобитися значення даних величин зовсім в інших точках, відмінних від вузлових, або з іншим кроком дискретизації аргументів. Завдання обчислення значень функції в проміжках між вузлами, що виникає при цьому, називається завданням інтерполяції, за межами сімейства вузлових точок уперед або назад за змінними – завданням екстраполяції або прогнозування. Розв’язання цих завдань також звичайно виконується з використанням апроксимуючих функцій.

Всі перераховані вище завдання відносяться до завдань наближення сигналів і функцій і мають багатовікову історію, у процесі якої сформувалися класичні математичні методи апроксимації, інтерполяції, екстраполяції й регресії функцій. Всі сучасні математичні системи (Mathcad, Matlab, Maple та т. ін.) мають у своїй складовій універсальний апарат виконання таких операцій, що дає користувачеві можливість реалізації будь-яких практичних завдань щодо обробки даних.

Емпіричні дані, як правило, задаються числовими рядами значень двох величин: незалежної й залежної , кожна з яких у загальному випадку крім певної регулярної (детермінованої) складової може містити й випадкову складову, яка обумовлена як статистичною природою досліджуваних процесів, так і зовнішніми факторами процесів вимірювання і перетворення даних (шуми, перешкоди, що дестабілізують фактори й помилки вимірювання). Незалежна змінна звичайно вважається детермінованою, а, отже, її випадкова складова „переноситься” на залежну змінну . Приймається також, що значення випадкової складової залежної змінної (як власні, так і „сумарні”) розподілені за деяким імовірнісним законом (наприклад – нормальним).

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

вибору міри близькості залежної змінної до шуканої функції й методу побудови наближення (параметрів математичної моделі);

вибору підходящого класу функції апроксимації (степеневої, тригонометричної та т. ін.), що відповідає фізичній природі процесу, який ми моделюємо;

методу оптимізації порядку модельної функції або числа членів ряду апроксимуючого виразу.

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

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

Таким чином, вихідний неперервний вплив на систему замінюється іншим (наближеним). Очевидно, що чим менше крок дискретизації й точніше апроксимація, тим ближче на виході реальний процес системи й процес, що моделюється. Найцікавіше питання тут пов’язане з вибором кроку дискретизації. Відомо, що повністю характеризувати лінійну систему можна за допомогою імпульсної характеристики , що є реакцією системи на дельта-функцію . Інший спосіб опису системи – це частотна характеристика, що є залежністю комплексної амплітуди відгуку системи від частоти гармонійного вхідного впливу.

Розглянемо ситуацію, коли вхідним впливом є випадковий процес. Це пов’язане з тим, що випадковий процес найбільш повно характеризує різні можливі впливи, у тому числі й різноманітні детерміновані. Тут можливі дві ситуації:

1) смуга частот вхідного процесу (ширина спектральної щільності потужності випадкового процесу) набагато ширше смуги пропущення частот системи;

2) смуга частот вхідного процесу (ширина спектральної щільності потужності випадкового процесу) сумірна зі смугою пропущення частот системи.

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

3.3. Функції спектрального аналізу в Matlab

Гармонійний аналіз. Основним інструментом сучасного гармонійного аналізу є перетворення Фур'є. В MATLAB йому відповідають функції fft, ifft, fft2, ifft2, fftn і ifftn.

Розглянемо деякі з них.

FFT(X) – дискретне перетворення Фур'є (DFT) вектора X. Якщо довжина X – степінь числа 2, то застосовується швидкий алгоритм перетворення Фур'є. Якщо довжина X – не степінь числа 2, то використовується більш повільний алгоритм. Для матриць, операція FFT застосовується до кожного стовпця. Для багатомірних масивів операція FFT оперує на першому нетривіальному вимірі.

FFT(X,N) – N-точкове ДПФ, що доповнює нулями вектор X, якщо він має менш ніж N точок, і обрізане, якщо N має більше відліків.

FFT(X,[],DIM) або FFT(X,N,DIM) – застосовує розглянуту вище операцію FFT до вектора X розмірності DIM.

Зауваження 1. „FFT” – абревіатура від „Fast Fourie Transform” (українською – „ШПФ” – від „Швидке Перетворення Фур'є”). Перевагою цієї обчислювальної процедури є застосування спеціального, „швидкого” варіанта алгоритму.

Функція ifft використовується для обернення дискретного перетворення Фур’є і в коді містить звертання до вбудованої функції fft:

function y = ifft(x,nfft,dim)

if nargin == 3 % Виконуємо операцію над розмірністю dim

y = conj(fft(conj(x),nfft,dim));

elseif nargin == 2 %

y = conj(fft(conj(x),nfft)); % Працюємо з першою нетривіальною розмірністю даних довжиною nfft

else

y = conj(fft(conj(x))); % Робота без модифікації довжини блоку

end

% Присвоюємо змінній dim номер першої нетривіальної розмірності

if nargin<3,

dim = min(find(size(x)>1));

if isempty(dim), dim = 1; end

end

% Підраховуємо число даних у блоці, що обробляється

m = size(y,dim);

y = y/m;

Зауваження 2. У деяких підручниках прийнято ділення на довжину вхідної послідовності відносити на пряме перетворення й навіть розподіляти порівну – по .

Зауваження 3. Чим довше , тим густішою буде сітка за віссю частот у наближенні неперервного перетворення Фур’є за допомогою дискретних даних. Однак, слід мати на увазі ефект симетрії ДПФ у випадку реального вхідного вектора. Тому має сенс розглядати тільки перші точки ДПФ.

Вбудована функція filter виконує операції з даними „нальоту”, тобто за мірою надходження в порт ЕОМ послідовних блоків даних і вимагає строгої оптимізації обчислювальних алгоритмів за швидкістю виконання та пам’яттю. Можна використати перетворення Фур’є, що вимагає у своєму швидкому варіанті операцій із блоком довжини ( – стала, що не залежить від ). Однак, при розв’язанні завдань обробки даних з відомими спектральними характеристиками „вигідніше” використовувати фільтри. Залежно від того, яка модель фільтра використовується при його проектуванні і які додаткові властивості повинен мати отриманий реальний фільтр, використовують засоби MATLAB для проектування та візуалізації характеристик фільтра. Для стендових випробувань розроблених фільтрів використовується функція filter. У ній відображені змінювання внутрішнього стану фільтра, значення яких будуть використані під час одержання наступних компонентів виходу.

Функція Y = filter(B,A,X) фільтрує дані у векторі за допомогою фільтра, який заданий вектором чисельників та вектором знаменників . За допомогою цієї функції розв’язується різницеве рівняння вигляду:

.

Якщо , filter нормує фільтр діленням на . Якщо X – матриця, то filter виконує операції за стовпцями X.

Виклик [Y,Zf] = filter(B,A,X,Zi) створює доступ до початкових значень Zi і кінцевих значень Zf затримок. Zi – це вектор довжини MAX(LENGTH(A),LENGTH(B))-1 або масив таких векторів для кожного стовпчика X.