GRNN- Приближения функций

Этот пример использует функции NEWGRNN и SIM.

Вот восемь точек данных функции y, которые мы хотели бы подогнать. Входы функций X должны привести к целевым выходам T.

X = [1 2 3 4 5 6 7 8];
T = [0 1 2 3 2 1 2 1];

plot(X,T,'.','markersize',30)
axis([0 9 -1 4])
title('Function to approximate.')
xlabel('X')
ylabel('T')

Figure contains an axes. The axes with title Function to approximate. contains an object of type line.

Мы используем NEWGRNN, чтобы создать обобщенную регрессионую сеть y. Мы используем y SPREAD чуть ниже 1, расстояние между значениями входа, в порядок, чтобы получить функцию y, которая довольно близко соответствует отдельным точкам данных. Меньший разброс будет соответствовать данным лучше, но будет менее плавным.

spread = 0.7;
net = newgrnn(X,T,spread);
A = net(X);

hold on
outputline = plot(X,A,'.','markersize',30,'color',[1 0 0]);
title('Create and test y network.')
xlabel('X')
ylabel('T and A')

Figure contains an axes. The axes with title Create and test y network. contains 2 objects of type line.

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

x = 3.5;
y = net(x);
plot(x,y,'.','markersize',30,'color',[1 0 0]);
title('New input value.')
xlabel('X and x')
ylabel('T and y')

Figure contains an axes. The axes with title New input value. contains 3 objects of type line.

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

X2 = 0:.1:9;
Y2 = net(X2);
plot(X2,Y2,'linewidth',4,'color',[1 0 0])
title('Function to approximate.')
xlabel('X and X2')
ylabel('T and Y2')

Figure contains an axes. The axes with title Function to approximate. contains 4 objects of type line.