📄 neuralnetwork_rbf_regression.m
字号:
% RBF 神经网络用于函数拟合
% 使用平台 - Matlab6.5
% 作者:陆振波,海军工程大学
% 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页
% 电子邮件:luzhenbo@yahoo.com.cn
% 个人主页:http://luzhenbo.88uu.com.cn
%clc
clear
close all
%---------------------------------------------------
% 产生训练样本与测试样本
n1 = 1:2:200;
x1 = sin(n1*0.1);
n2 = 2:2:200;
x2 = sin(n2*0.1);
xn_train = n1; % 训练样本,每一列为一个样本
dn_train = x1; % 训练目标,行向量
xn_test = n2; % 测试样本,每一列为一个样本
dn_test = x2; % 测试目标,行向量
%---------------------------------------------------
% 训练与测试
switch 1
case 1
% 神经元数是训练样本个数
P = xn_train;
T = dn_train;
spread = 40; % 此值越大,覆盖的函数值就大(默认为1)
net = newrbe(P,T,spread);
case 2
% 神经元数逐步增加,最多就是训练样本个数
P = xn_train;
T = dn_train;
goal = 1e-12; % 训练误差的平方和(默认为0)
spread = 40; % 此值越大,需要的神经元就越少(默认为1)
MN = size(xn_train,2); % 最大神经元数(默认为训练样本个数)
DF = 1; % 显示间隔(默认为25)
net = newrb(P,T,goal,spread,MN,DF);
case 3
P = xn_train;
T = dn_train;
spread = 0.5; % 此值越大,需要的神经元就越少(默认为1)
net = newgrnn(P,T,spread);
end
err1 = sum((dn_train-sim(net,xn_train)).^2) % 训练误差的平方和
X = sim(net,xn_test); % 测试 - 输出为预测值
err2 = sum((dn_test-X).^2) % 训练误差的平方和
%---------------------------------------------------
% 结果作图
plot(1:length(n2),x2,'r+:',1:length(n2),X,'bo:')
title('+为真实值,o为预测值')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -