资源简介
matlab写的BP算法用于相机标定(非工具箱) 具体的操作参见说明

代码片段和文件信息
clear all
clc
close all
%% 函数为 f1=x+y*z/w f2=(x-y)*z f3=x/y+z;
tic;
NNN=30;
load Two_camera8; %
if NNN>length(weizhi)
NNN=length(weizhi);
end
%%
weizhi_all=weizhi(1:NNN:);
m=max(max(weizhi_all));
n=min(min(weizhi_all));
a=0.9;
weizhi_all=(weizhi_all-n)/(m-n)*a+(1-a)/2;
D=weizhi_all;
wo=D‘;
wo_1=wo;wo_2=wo;wo_3=wo;
%% 构建BP网络 4输入 3输出 中间层为4个 预设总共的训练次数XunLian=1000000,000次
jishu=0; % the count of iteration
% load([‘Two_camera‘ num2str(8) ‘.mat‘]); %循环读入文件
x=[u_f1(1:NNN:)v_f2(1:NNN:)];
m=max(max(x));
n=min(min(x));
X=(x-n)/(m-n)*a+(1-a)/2;
S=1;
wi=X;
wi_1=wi;wi_2=wi;wi_3=wi;
if S==2
wi=[-0.2846 0.2193 -0.5097 -1.0668;
-0.7484 -0.1210 -0.4708 0.0988;
-0.7176 0.8297 -1.6000 0.2049;
-0.0858 0.1925 -0.6346 0.0347;
0.4358 0.2369 -0.4564 -0.1324];
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[1.0438 0.5478 0.8682 0.1446 0.1537;
0.1716 0.5811 1.1214 0.5067 0.7370;
1.0063 0.7428 1.0534 0.7824 0.6494];
wo_1=wo;wo_2=wo;wo_3=wo;
end
xite=0.25;
alfa=0.05;
S=1;
IN=4;H=5;Out=3;
x=[000];
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
Oh=zeros(H1);
I=Oh;
error_2=0;
error_1=0;
ts=0.001;
for k=1:1:6000
time(k)=k*ts;
if S==1
rin(k)=1.0;
elseif S==2
rin(k)=sin(1*2*pi*k*ts);
end
a(k)=1.2*(1-0.8*exp(-0.1*k));
yout(k)=a(k)*y_1/(1+y_1^2)+u_1;
error(k)=rin(k)-yout(k);
xi=[rin(k)yout(k)error(k)1];
x(1)=error(k)-error_1;
x(2)=error(k);
x(3)=error(k)-2*error_1+error_2;
epid=[x(1);x(2);x(3)];
I=xi*wi‘;
for j=1:1:H
Oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));
end
K=wo*Oh;
for l=1:1:Out
K(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));
end
kp(k)=K(1);ti(k)=K(2);td(k)=K(3);
Kpid=[kp(k)ti(k)td(k)];
du(k)=Kpid*epid;
u(k)=u_1+du(k);
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
dyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001));
for j=1:1:Out
dK(j)=2/(exp(K(j))+exp(-K(j)))^2;
end
for l=1:1:Out
delta3(l)=error(k)*dyu(k)*epid(l)*dK(l);
end
for l=1:1:Out
for i=1:1:H
d_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2);
end
end
wo=wo_1+d_wo+alfa*(wo_1-wo_2);
for i=1:1:H
dO(i)=4/(exp(I(i))+exp(-I(i)))^2;
end
segma=delta3*wo;
for i=1:1:H
delta2(i)=dO(i)*segma(i);
end
d_wi=xite*delta2‘*xi;
wi=wi_1+d_wi+alfa*(wi_1-wi_2);
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);
wo_3=wo_2;
wo_2=wo_1;
wo_1=wo;
wi_3=wi_2;
wi_2=wi_1;
wi_1=wi;
error_2=error_1;
error_1=error(k);
end
figure(1);
plot(timerin‘r‘timeyout-0.01‘b‘);
figure(2);
plot(timeerror‘r‘);
figure(3)
subplot(311);
plot(timekp‘r‘);
subplot(312);
plot(timeti‘g‘);
subplot(313);
plot(timetd‘b‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-04-05 10:10 BP算法\
目录 0 2013-04-08 17:00 BP算法\传统BP和传统改进BP\
文件 2996 2013-04-08 17:00 BP算法\传统BP和传统改进BP\Baidu_try.m
文件 4193 2013-04-06 12:50 BP算法\传统BP和传统改进BP\Copy_of_Stardard_BP_4_2.m
文件 4773 2013-04-08 20:18 BP算法\传统BP和传统改进BP\Modified_BP_1.m
文件 5074 2013-04-02 23:18 BP算法\传统BP和传统改进BP\Modified_BP_2.m
文件 4894 2013-04-02 23:17 BP算法\传统BP和传统改进BP\Modified_BP_3.m
文件 4382 2013-04-08 20:04 BP算法\传统BP和传统改进BP\Stardard_BP_4_2.m
文件 2013 2013-03-28 10:04 BP算法\传统BP和传统改进BP\Two_camera8.mat
目录 0 2013-04-08 17:31 BP算法\革命性的BP算法\
文件 4830 2013-04-08 15:46 BP算法\革命性的BP算法\BP.m
文件 472 2013-04-05 21:53 BP算法\革命性的BP算法\Net_func.m
文件 508 2013-04-05 21:54 BP算法\革命性的BP算法\Net_func_diff.m
文件 4363 2013-04-08 15:58 BP算法\革命性的BP算法\Revolutionised_BP.m
文件 1999 2013-04-05 23:14 BP算法\革命性的BP算法\Standard_BP_test.m
文件 2013 2013-03-28 10:04 BP算法\革命性的BP算法\Two_camera8.mat
- 上一篇:SVM数据归一化matlab程序
- 下一篇:最小二乘法的matlab实现
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论