Линейный нейрон может адаптироваться так, что при наличии одного сигнала он может предсказать второй сигнал.
TIME определяет временные этапы этого моделирования. P определяет сигнал в течение этих временных шагов. T - это сигнал, полученный из P, смещая его влево, умножая на 2 и добавляя к себе.
time = 1:0.01:2.5; X = sin(sin(time).*time*10); P = con2seq(X); T = con2seq(2*[0 X(1:(end-1))] + X);
Вот как строятся два сигнала:
plot(time,cat(2,P{:}),time,cat(2,T{:}),'--')
title('Input and Target Signals')
xlabel('Time')
legend({'Input','Target'})
Линейная сеть должна иметь задержку прослушивания, чтобы узнать сдвинутую во времени корреляцию между P и T. NEWLIN создает линейный уровень. [-3 3] - ожидаемый диапазон ввода. Второй аргумент - количество нейронов в слое. [0 1] указывает один вход без задержки и один вход с задержкой, равной единице. Последний аргумент - это скорость обучения.
net = newlin([-3 3],1,[0 1],0.1);
ADAPT моделирует адаптивные сети. Он принимает сеть, сигнал и целевой сигнал и адаптивно фильтрует сигнал. Постройте график вывода Y синим цветом, целевого T красным цветом и ошибки E зеленым цветом. К t = 2 сеть узнала отношение между входом и целью и ошибка падает почти до нуля.
[net,Y,E,Pf]=adapt(net,P,T);
plot(time,cat(2,Y{:}),'b', ...
time,cat(2,T{:}),'r', ...
time,cat(2,E{:}),'g',[1 2.5],[0 0],'k')
legend({'Output','Target','Error'})