Фильтрация сигнала

На рис. 5.7 представлена структурная схема цифрового фильтра, отличительной
особенностью которого является то, что он включает динамический компонент – линию задержки (ЛЗ) и 1 слой линейной нейронной сети.

Рис. 5.7

Последовательность значений входного сигнала { p (k)} поступает на ЛЗ, состоящую
из N –1 блока запаздывания; выход ЛЗ – N -мерный вектор pd, составленный из значений входа в моменты времени k, k –1, …, kN –1.

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

(5.10)

Рассмотрим конкретный пример цифрового фильтра, представленный на рис. 5.8.

Рис. 5.8

Предположим, что входной сигнал принимает значения в диапазоне от 0 до 10, и сформируем линейную сеть с одним входом и одним выходом, используя М-функцию newlin:

net = newlin([0,10],1);

Введем ЛЗ с двумя тактами запаздывания:

net.inputWeights{1,1}.delays = [0 1 2];

определим следующие начальные значения весов и смещения:

net.IW{1,1} = [7 8 9];

net.b{1} = [0];

зададим начальные условия для динамических блоков линии задержки:

pi ={1 2}

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

Теперь определим входной сигнал в виде следующей последовательности значений:

p = {3 4 5 6}

и промоделируем эту сеть:

[a,pf] = sim(net,p,pi);

a = [46] [70] [94] [118]

pf = [5] [6].

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

T = {10 20 30 40};

Выполним настройку параметров, используя процедуру адаптации adapt и 10 циклов обучения:

net.adaptParam.passes = 10;

[net,y,E pf,af] = adapt(net,p,T,pi); % Процедура адаптации

Выведем полученные значения весов, смещения и выходного сигнала:

wts = net.IW{1,1}, bias = net.b{1}, y

wts = 0.5059 3.1053 5.7046

bias = 1.5993

y = [11.856] [20.774] [29.668] [39.004]

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

net.adaptParam.passes = 500;

[net,y,E,pf,af] = adapt(net,p,T,pi);

y

y = [10.004] [20.002] [29.999] [39.998]

Таким образом, линейные динамические нейронные сети могут быть адаптированы для решения задач фильтрации временных сигналов. Для сетей такого класса часто
используется название ADALINE (ADaptive LInear NEtwork) – адаптируемые линейные сети. Рассмотрим другие применения этих сетей.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: