资源简介
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实现
- SVM数据归一化matlab程序
- PMSM三闭环仿真
- IEEE标准14节点PQ分解法MATLAB程序
- 最小拍控制器的Matlab仿真
- MATLAB图像识别源代码
- MATLAB脉动风荷载模拟程序
- Matlab的模拟退火算法工具包
- ARMA模型的Matlab代码
- 综合评价方法MATLAB实现matlab文件何逢
- M/M/N 排队系统多服务员排队系统的m
- 64位的matlab的jpegtbx_1.4 jpeg tool box
- 音频数字水印
- 双参数cfar检测器 matlab仿真程序
- 使用matlab进行编写的使用超限插值法
- HEED协议的matlab源代码
- 非下采样轮廓波变换matlab代码
- 冈萨雷斯数字图像处理matlab版.源代码
- matlab仿真 短时谱 语谱图 倒谱复倒谱
- 计算色温matlab版
- 多进制空时分组码(STBC)matlab仿真
- pca与KL变换的综合matlab实现代码
- matlab计算粗糙集的下近似属性依赖度
- 用matlab编写的一些相关InSAR数据处理程
- CRC校验的Matlab源代码
- 基于MATLAB直流调速系统设计与仿真
- matlab在时间序列建模预测及程序代码
- 最优化matlab作业代码
- BFGS+DFP+SUMT——matlab源程序一例
- 曲柄滑块机构的运动学matlab仿真 源代
评论
共有 条评论