📄 zp.m
字号:
%% ---------------------------------------------------
% 初始化
clc %清空命令窗口
clear %清空内存
close all %关闭所有绘图窗口
%% ---------------------------------------------------
% 产生训练样本和训练目标
x=linspace(-1,1,11); %x在[-1,1]范围内按等差数列取11个值
y=linspace(-1,1,11); %y在[-1,1]范围内按等差数列取11个值
[x,y]=meshgrid(x,y);
x=x(:)'; y=y(:)'; %x、y各取11个值,产生121个坐标即为训练样本
z=0.5+64*(x-0.5).*(y-0.5).*(x+0.5)./(1+(4*x-2)^2+(4*y-2)^2);
%z=cos(pi*x).*sin(pi*y); %训练目标
%% ---------------------------------------------------
% 创建一个前向反馈BP神经网络
net=newff([-1 1;-1 1],[20,30,1],{'tansig','tansig','tansig'});
net.trainParam.epochs=111; %最大训练步数
net.trainFcn='trainlm'; %训练算法
net.trainParam.goal=1e-6; %最小均方误差
net.trainParam.min_grad=1e-8; %最小梯度
net.trainParam.show=30; %训练显示间隔
net.trainParam.time=inf; %最大训练时间
%% ---------------------------------------------------
% 训练神经网络
[net,tr]=train(net,[x;y],z);
%% ---------------------------------------------------
% 产生测试样本并绘制函数预测值曲线
[x2,y2]=meshgrid(-1:.05:1,-1:.05:1);
x1=x2(:)';
y1=y2(:)'; %产生测试样本
figure;
z1=sim(net,[x1;y1]); %测试,输出预测值
z2=reshape(z1,size(x2));
surf(x2,y2,z2); %绘制预测值曲线
%% ---------------------------------------------------
% 绘制测试样本的函数真实值曲线
figure;
[x0,y0]=meshgrid(-1:.05:1,-1:.05:1);
z0=cos(pi*x0).*sin(pi*y0); %计算预测值
surf(x0,y0,z0); %绘制真实值曲线
%% ---------------------------------------------------
%输出测试样本的函数预测值和真实值
z2 %输出预测值
z0 %输出真实值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -