На рис. 5.7 представлена структурная схема цифрового фильтра, отличительной
особенностью которого является то, что он включает динамический компонент – линию задержки (ЛЗ) и 1 слой линейной нейронной сети.
Рис. 5.7
Последовательность значений входного сигнала { p (k)} поступает на ЛЗ, состоящую
из N –1 блока запаздывания; выход ЛЗ – N -мерный вектор pd, составленный из значений входа в моменты времени k, k –1, …, k – N –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) – адаптируемые линейные сети. Рассмотрим другие применения этих сетей.