Этот пример использует функции 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')