?? 11.m
字號:
P=[-1:0.05:1];
randn('seed',78341223);
T=sin(2*pi*P)+0.1*randn(size(P));
close all
clear
echo on
clc
%NEWFF--生成一個新的前向神經網絡
%TRAIN--對BP神經網絡進行訓練
%SIM--對BP神經網絡進行仿真
pause
%敲任意鍵開始
clc
%定義訓練樣本
%P為輸入矢量
P=[-1:0.05:1];
%T為目標矢量
randn('seed',78341223);T=sin(2*pi*P)+0.1*randn(size(P));
%繪制樣本數據點
plot(P,T,'+');
echo off
hold on;
plot(P,sin(2*pi*P),':');
%繪制不含噪聲的正弦曲線
echo on
clc
pause
clc
%創建一個新的前向神經網絡
net=newff(minmax(P),[20,1],{'tansig','purelin'});
pause
clc
echo off
clc
disp('1. L-M優化算法TRAINLM');disp('2. 貝葉斯正則化算法TRAINBR');
choice=input('請選擇訓練算法(1,2):');
figure(gcf);
if(choice==1)
echo on
clc
%采用L-M優化算法TRAINLM
net.trainFcn='trainlm';
pause
clc
%設置訓練參數
net.trainParam.epochs=500;
net.trainParam.goal=1e-6;
%重新初始化
pause
clc
elseif(choice==2)
echo on
clc
%采用貝葉斯正則化算法TRAINBR
net.trainFcn='trainbr';
pause
clc
%設置訓練參數
net.trainParam.epochs=500;
randn('seed',192736547);
net=init(net);
%重新初始化
pause
clc
end
%調用相應算法訓練BP網絡
[net,tr]=train(net,P,T);
pause
clc
%對BP網絡進行仿真
A=sim(net,P);
%計算仿真誤差
E=T-A;
MSE=mse(E)
pause
clc
%繪制匹配結果曲線
close all;
plot(P,A,P,T,'+',P,sin(2*pi*P),':');
pause;
clc
echo off
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -