MATLAB神经网络和优化算法

1. matlab感知器神经网络初步学习


%%   学习目标:从学习第一个最简单的神经网络案例开启学习之路
%%   感知器神经网络   用于点的分类
clear all;
close all;
P=[0 0 1 1;0 1 0 1];                         %输入向量
T=[0 1 1 1];                                 %目标向量
net=newp(minmax(P),1,'hardlim','learnp');    %建立感知器神经网络
net=train(net,P,T);                          %对网络进行训练
Y=sim(net,P);                                %对网络进行仿真
plotpv(P,T);                                 %绘制感知器的输入向量和目标向量,绘制样本点
plotpc(net.iw{1,1},net.b{1});                %在感知器向量图中绘制分界线

运行结果:
在这里插入图片描述
网络图:
在这里插入图片描述
在这里插入图片描述

2 使用建立好的神经网络进行分类程序

clear all;
close all;
P=[-0.4 -0.4 0.5 -0.2 -0.7;-0.6 0.6 -0.4 0.3 0.8];      %输入向量
T=[1 1 0 0 1];                                          %输出向量
plotpv(P,T);                                            %绘制样本
net=newp(minmax(P),1,'hardlim','learnpn');              %建立神经网络
hold on;
linehandle=plot(net.IW{1},net.b{1});
E=1;
net.adaptParam.passes=10;
while mae(E)                                            %误差达到要求才停止训练
    [net,Y,E]=adapt(net,P,T);                           %进行感知器神经网络的训练
    linehandle=plotpc(net.IW{1},net.b{1},linehandle);
    drawnow;
end
save net1 net;                                          %将训练好的神经网络进行保存
set(gcf,'position',[60,60,300,300]);

在这里插入图片描述

%%  用刚才建立的神经网络进行分类
clear all;
close all;
load net1.mat;                                  %加载上次训练好的神经网络
X=[-0.3 0.3 0.9;-0.6 0.2 0.8];                  %输入向量
Y=sim(net,X);                                   %对输入进行仿真
figure;
plotpv(X,Y);                                    %绘制样本点
plotpc(net.IW{1},net.b{1});                     %绘制分类线
set(gcf,'position',[60,60,300,300]);

在这里插入图片描述

3 线性神经网络预测程序

%% 学习目标: 线性神经网络
%%  收敛速度和精度比之前讲的感知器神经网络要高,
%%  主要应用在函数逼近,信号预测,模式识别,系统辨识方面
clear all;
close all;
P=[1.1 2.2 3.1 4.1];
T=[2.2 4.02 5.8 8.1];
lr=maxlinlr(P);                   %获取最大学习速率
net=newlin(minmax(P),1,0,lr);     %建立线性神经网络
net.trainParam.epochs=500;        %训练    做多500次
net.trainParam.goal=0.04;         %训练误差设定为0.04
net=train(net,P,T);
Y=sim(net,P)                       %仿真

在这里插入图片描述
在这里插入图片描述

%%  利用线性神经网络进行信号的预测
clear all;
close all;
t=0:pi/10:4*pi;
X=t.*sin(t);
T=2*X+3;
figure;
plot(t,X,'+-',t,T,'+--');
legend('系统输入','系统输出');
set(gca,'xlim',[0 4*pi]);
set(gcf,'position',[50,50,400,400]);
net=newlind(X,T);
y=sim(net,X);
figure;
plot(t,y,'+:',t,y-T,'r:');
legend('网络预测输出','误差');
set(gca,'xlim',[0 4*pi]);
set(gcf,'position',[50,50,400,400]);

在这里插入图片描述

4 BP神经网络信号拟合程序

%%  学习目标:BP神经网络
%%  函数逼近  数据压缩   模式识别
%%  考虑要素:网络层数  输入层的节点数  输出层的节点数  隐含层的节点数
%%  传输函数  训练方法
%%  对信号曲线进行拟合
clear all;
clear all;
P=-1:0.04:1;
T=sin(2*pi*P)+0.1*randn(size(P));
net=newff(P,T,18,{},'trainbr');    %%   隐含层神经元个数是18
net.trainParam.show=10;
net.trainParam.epochs=100;         %%  训练100次
net=train(net,P,T);
Y=sim(net,P);
figure;
plot(P,T,'-',P,Y,'+');
legend('原始信号','网络输出信号');
set(gcf,'position',[20,20,500,400]);

在这里插入图片描述

在这里插入图片描述
网络图:
在这里插入图片描述
回归:
在这里插入图片描述
训练状态:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太极生两鱼

要天天开心哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值