Адаптивное подавление помех

Линейному нейрону позволяют адаптироваться так, чтобы, учитывая один сигнал, он мог предсказать второй сигнал.

ВРЕМЯ задает временные шаги этой симуляции. 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 и Т. НЬЮЛИНОМ создает линейный слой. [-3 3] ожидаемый входной диапазон. Второй аргумент является количеством нейронов в слое. [0 1] задает вход того без задержки и один вход с задержкой одной. Последний аргумент является скоростью обучения.

net = newlin([-3 3],1,[0 1],0.1);

АДАПТИРУЙТЕСЬ симулирует адаптивные сети. Это берет сеть, сигнал и целевой сигнал, и фильтрует сигнал адаптивно. Постройте выход 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'})