Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / Потемкин В.Г. MATLAB 6.doc
Скачиваний:
5
Добавлен:
07.09.2025
Размер:
15.55 Mб
Скачать

Синтез сети

Нейронная сеть должна иметь только 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, где рассмотрена подобная задача.

9.1.4. Моделирование нестационарного фильтра

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

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

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

time1 = 0:0.005:4;

time2 = 4.005:0.005:6;

time = [time1 time2];

R = sin(sin(time*4).*time*8);

plot(time,R)

axis([0 6 –1.1 1.1]);

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

Рис. 9.16

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

(9.3)

Этот фильтр может быть представлен в системе MATLAB следующим образом:

steps1 = length(time1);

[Y1,state] = filter([1 –0.5],1,R(1:steps1));

steps2 = length(time2);

Y2 = filter([0.9 –0.6],1,R((1:steps2) + steps1),state);

Y = [Y1 Y2];

plot(time,Y)

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

Рис. 9.17

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

T = con2seq(Y);

P = con2seq(R);