Приближение функций 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object with title Function to approximate. contains 4 objects of type line.