Main Content

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 广义回归网络。我们使用略低于 1 的 y SPREAD(即输入值之间的距离),以便得到与各数据点拟合程度很高的 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')