?? bp222.m
字號(hào):
%%%%%%%%%%%%%學(xué)習(xí)樣本
%function o1o2=xyo1o2(a,b)
%由循環(huán)程序給出機(jī)器人關(guān)節(jié)變量(o1,02),通過正解運(yùn)算求出相應(yīng)的末端位姿(x,y),從而得到學(xué)習(xí)樣本
clear
clc
l1=1; %連桿長(zhǎng)度50cm
l2=0.8;
n=100;
g=zeros(2,n);
o1=pi/20:pi/20:pi/2;
o2=pi/40:pi/40:pi/4;
for i=1:1:10;
for j=1:1:10;
g(1,j+10*(i-1))=o1(i);
g(2,j+10*(i-1))=o2(j);
end
end
for i=1:1:n
o1=g(1,i);
o2=g(2,i);
x=l1*cos(o1)+l2*cos(o1+o2);
y=l1*sin(o1)+l2*sin(o1+o2);
s(1,i)=x;
s(2,i)=y;
end
g ; %關(guān)節(jié)變量
s ; %末端位姿
x1=s(1,:);
x2=s(2,:);
th1=g(1,:);
th2=g(2,:);
th=[th1;th2]; %期望值
s=[x1;x2]; %樣本輸入
%%%%%%%%%%%%%%%BP神經(jīng)網(wǎng)絡(luò)的仿真
n=10;%設(shè)置網(wǎng)絡(luò)隱單元的神經(jīng)元數(shù)目
%建立相應(yīng)的BP網(wǎng)絡(luò) 傳遞函數(shù)分別為tansig、purelin,訓(xùn)練函數(shù)(反向傳遞函數(shù))是trainlm
net=newff(minmax(s),[n 2],{'tansig' 'purelin'},'trainlm');
%訓(xùn)練網(wǎng)絡(luò)
net.trainParam.epochs=2000;
net.trainParam.goal=0.0001;
tic
net=train(net,s,th)
%對(duì)訓(xùn)練后的網(wǎng)絡(luò)進(jìn)行仿真
y2=sim(net,s)
y21=y2(1,:);
y22=y2(2,:);
figure;
plot(th1,'ko')
hold on;
plot(y21,'b*')
legend('期望輸出','網(wǎng)絡(luò)輸出');
xlabel('樣本值')
ylabel('th1')
title('th1的期望與仿真輸出曲線')
pause
figure;
e1=th1-y21;
plot(e1,'black-')
axis([0 100 -0.5 0.5])
%legend('期望輸出','網(wǎng)絡(luò)輸出');
xlabel('樣本點(diǎn)')
ylabel('e1')
title('o1的e1仿真輸出曲線')
pause
figure;
plot(th2,'ko')
hold on;
plot(y22,'r*')
legend('期望輸出','網(wǎng)絡(luò)輸出');
xlabel('樣本值')
ylabel('th2')
title('th2的期望與仿真輸出曲線')
pause
figure;
e2=th2-y22;
plot(e2,'black-')
axis([0 100 -0.5 0.5])
%legend('期望輸出','網(wǎng)絡(luò)輸出');
xlabel('樣本點(diǎn)')
ylabel('e2')
title('o2的e2仿真輸出曲線')
a=input('enter x(-0.5 to 1.7):')
while (x>1.5) | (x<-1.5)
x=input('x must in -1.5 to 1.5,Please re-type:')
end
b=input('enter y(0.3 to 1.7):')
while (y>1.6) | (y<0)
y=input('y must in 0 to 1.6,Please re-type:')
end
s.test=[a;b];
o1o2=sim(net,s.test)
tic
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -