Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

Постановка задачи

Допустим, что на вход фильтра подается входной сигнал вида r(t) = sin(10*sin(t)*t), заданный массивом значений R с тактом квантования 0.025 с на интервале 5 с:

time = 0:0.025:5;

R = sin(sin(time).*time*10);

plot(time,R)

axis([0 5 –1 1]);

График этого сигнала показан на рис. 9.12.

Рис. 9.12

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

(9.2)

Это фильтр второго порядка, функционирование которого в системе MATLAB описывается следующей М-функцией:

Y = filter([1 0.5 –1.5],1,R);

plot(time,T)

axis([0 5 –2 2]);

График сигнала выхода этого фильтра показан на рис. 9.13.

Рис. 9.13

Задача нейронной сети – сформировать такую линейную модель, которая в процессе обучения определяет параметры фильтра, а затем использует их для моделирования при произвольных значениях входа.

Определим следующую обучающую последовательность: в качестве целевого выхода T примем массив Y, а входную последовательность P зададим на основе текущего и двух предшествующих значений входа R:

T = Y;

Q = size(R,2);

P = zeros(3,Q);

P(1,1:Q) = R(1,1:Q);

P(2,2:Q) = R(1,1:(Q–1));

P(3,3:Q) = R(1,1:(Q–2));

Синтез сети

Нейронная сеть должна иметь только 1 нейрон, потому что динамическая система имеет только 1 выход. Нейрон должен иметь 3 входа, чтобы получить текущий и 2 запаздывающих значения входного сигнала. М-функция newlind позволяет выполнить синтез такой нейронной сети:

net = newlind(P,T);

net.IW{1}, net.b

ans = 1.0000 0.5000 –1.5000

ans = –7.4394e–017

Нетрудно убедиться, что сеть точно определяет параметры фильтра.

Проверка сети

Для проверки функционирования сети подадим входную последовательность Р и сравним с целевой последовательностью T(рис. 9.14):

a = sim(net,P);

plot(time,T, 'Color', [0 0.8 0.8], 'LineWidth',3),hold on

plot(time,a, 'k'), grid on

axis([0 5 –2 2]); % Рис.9.14

Рис. 9.14

Сеть выполняет поставленную задачу. Погрешность моделирования показана на рис. 9.15 и находится в пределах точности компьютера при вычислениях с плавающей точкой:

e = T–a; plot(time, e)

Рис. 9.15

Построенная линейная нейронная сеть может быть использована для идентификации и моделирования динамических систем, причем для линейных систем погрешности близки к 0.

Для нелинейных систем такой подход при достаточно малых амплитудах входного сигнала обеспечивает линеаризацию с минимальной среднеквадратичной ошибкой. Если нелинейная система переместится в другую рабочую точку, то изменятся и параметры нейронной сети. Для того чтобы получить линеаризованную модель за короткое время, частота замеров должна быть достаточно высокой, а на вход нелинейной системы необходимо подать пробный сигнал в виде случайного процесса небольшой амплитуды. Это ускорит адаптацию сети, поскольку большее количество измерений, характеризующих динамику системы, будет представлено на коротком интервале времени. Учет в случае нелинейных систем большего числа запаздывающих входов позволяет минимизировать ошибку при моделировании нелинейной системы. Если система характеризуется существенной нелинейностью, то более подходящими будут сети с обучением методом обратного распространения ошибки или радиальные базисные сети.

Читатель может обратиться к демонстрационному примеру applin3, где рассмотрена подобная задача.