Линейному нейрону позволено адаптироваться так, что, учитывая один сигнал, он может предсказать второй сигнал.
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'})