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

Инициализация сети

Сеть состоит только из одного нейрона, так как требуется только одно значение выходного сигнала T, которое генерируется на каждом шаге (рис. 9.9).

Рис. 9.9

Для создания такой сети предназначена М-функция newlin; параметр скорости настройки выберем равным 0.1:

lr = 0.1;

delays = [1 2 3 4 5];

net = newlin(minmax(cat(2,P{:})),1,delays,lr);

[net,a,e] = adapt(net,P,T);

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

net.IW{1}

net.b

ans = 0.39421 0.10682 –0.15592 –0.31476 –0.34523

ans = –4.5457e–006

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

Построим график выходного сигнала и сравним его с целевым сигналом (рис. 9.10):

y = sim(net,P);

plot(time,cat(2,y{:}), time,cat(2,T{:}),'.') % Рис.9.10

axis([0 6 –1.5 1.5])

Рис. 9.10

Построим также график сигнала ошибки (рис. 9.11):

plot(time,cat(2,e{:}))

Рис. 9.11

Как следует из этого графика, для настройки на слежение нейронной сети требуется около 30 тактов (1.5 с) и далее до 4-й секунды сигнал отслеживается с высокой точностью. Затем целевой сигнал мгновенно изменяет частоту и нейронная сеть настраивается на новый сигнал за те же 30 тактов, но теперь это составляет 0.75 с. Это обусловлено тем, что частота съема увеличилась вдвое.

Таким образом, линейная нейронная сеть успешно справляется с задачей слежения за гармоническим сигналом, если частота квантования синхронизирована с частотой наблюдаемых сигналов. Для настройки на новую частоту требуется всего 30 измерений; для типичных сигналов, возникающих в приложениях, обработка сообщений может производиться с частотой 20 кГц, при такой частоте 30 тактов настройки занимают 1.5 мс.

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

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

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

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

Допустим, что на вход фильтра подается входной сигнал вида 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));