Приближение функций 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')

Мы используем 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')

Мы можем использовать сеть, чтобы аппроксимировать функцию в 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')

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

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')