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