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