Проект линейного предсказания

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

Определение формы волны

Здесь время задано от 0 до 5 секунд на шагах 1/40 секунды.

time = 0:0.025:5;

Мы можем задать сигнал относительно времени.

signal = sin(time*4*pi);
plot(time,signal)
xlabel('Time');
ylabel('Signal');
title('Signal to be Predicted');

Подготовка проблемы для Нейронной сети

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

signal = con2seq(signal);

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

Xi = signal(1:4);
X = signal(5:(end-1));
timex = time(5:(end-1));

Цели теперь заданы, чтобы совпадать с входными параметрами, но переключены ранее к одному такту.

T = signal(6:end);

Разработка линейного слоя

Функция newlind теперь разработает линейный слой с одним нейроном, который предсказывает следующий такт сигнала, учитывая ток и четыре прошлых значения.

net = newlind(X,T,Xi);
view(net)

Тестирование линейного слоя

Сеть может теперь быть названа как функция на входных параметрах и задержала состояния, чтобы получить ее ответ времени.

Y = net(X,Xi);

Выходной сигнал построен с целями.

figure
plot(timex,cell2mat(Y),timex,cell2mat(T),'+')
xlabel('Time');
ylabel('Output -  Target +');
title('Output and Target Signals');

Ошибка может также быть построена.

figure
E = cell2mat(T)-cell2mat(Y);
plot(timex,E,'r')
hold off
xlabel('Time');
ylabel('Error');
title('Error Signal');

Заметьте, насколько маленький ошибка!

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