Этот пример иллюстрирует, как спроектировать линейный нейрон, чтобы предсказать следующее значение во временных рядах, учитывая последние пять значений.
Здесь время задано от 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');
Заметьте, насколько маленький ошибка!
Этот пример проиллюстрировал, как спроектировать динамическую линейную сеть, которая может предсказать следующее значение сигнала от текущих и прошлых значений.