现代检测与matlabWord下载.docx
- 文档编号:21162796
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:20
- 大小:123.25KB
现代检测与matlabWord下载.docx
《现代检测与matlabWord下载.docx》由会员分享,可在线阅读,更多相关《现代检测与matlabWord下载.docx(20页珍藏版)》请在冰豆网上搜索。
求解一元线性回归关键在于几点:
公式为Y=Bo+BX,只需求出参数B、Bo即可。
B的求解由公式B=Lxy/Lxx求得
Bo的求解由公式Bo=Y平均-B*X平均求得
以上运算都可以用MATLAB的基础运算实现
二、多元线性回归
1、任务要求
1、根据经验知道某变量y受变量x1、x2影响,通过实验获得表中的一批数据,
试建立y对x1、x2的线性回归方程。
2、程序清单
用matlab计算:
由多元线性回归方程:
Y=B0+B1*X1+B2*X2;
先对方程两侧进行求导,再由矩阵运算求出B1、B2。
最后求出B0。
程序如下:
X1=[15.5810.6815.6215.7813.2216.4411.416.1714.0315.6712.7411.7314.8413.7315.1217.8813.3814.2116.816.3810.8117.2614.9218.1418.1510.3111.412.5717.61];
X2=[1.951.372.391.141.851.322.051.111.471.381.351.331.091.271.782.521.432.271.411.781.321.311.422.131.20.981.270.871.21];
Y=[1.341.271.561.481.41.820.851.41.151.890.871.531.252.471.832.411.691.591.192.441.351.571.641.642.340.651.192.061.57];
%把X1,X2,Y值放入数组
L11=sum(X1.*X1)-((sum(X1))^2)/29
L11=
159.8905
L12=sum(X1.*X2)-sum(X1)*sum(X2)/29
L12=
7.2838
L22=sum(X2.*X2)-(sum(X2)^2)/29
L22=
5.1999
L1y=sum(X1.*Y)-sum(X1)*sum(Y)/29
L1y=
16.1565
L2y=sum(X2.*Y)-sum(X2)*sum(Y)/29
L2y=
0.8551
L21=L12;
L=[L11L12;
L21L22]
L=
159.89057.2838
7.28385.1999
YY=sum(Y)/29%数组Y中数据平均值
YY=
1.5669
XX1=sum(X1)/29%数组X1中数据平均值
XX1=
14.5714
XX2=sum(X2)/29%数组X2中数据平均值
XX2=
1.5162
YL=[L1y;
L2y]%将L1y、L2y组成列向量
YL=
B=inv(L)*YL%由公式L=B*YL求得B即得B1,B2
0.0999
0.0245
B0=YY-0.0999*XX1-0.0245*XX2%由公式B0=Y平均-B1*X1平均-B2*X2平均求B0
B0=
0.0741
Y=0.0741+0.0999*X1+0.0245*X2%拟合曲线公式即为Y=B0+B1*X1+B2*X2
plot3(X1,X2,Y)%绘制二元线性回归三维立体图
3、
程序输出结果及分析
输出结果:
B0=0.0741。
B1=0.0999。
B2=0.0245。
则Y=0.0741+0.0999*X1+0.0245*X2
生成结果如右图:
结果分析:
多元线性回归问题与一元线性回归问题原理相同,求取一元线性回归拟合曲线问题相当于求解方程个数大于未知数个数的方程组以获取自变量x与因变量y之间的关系。
不同的是多元线性回归影响因变量的因素不是一个而是多个。
为求得最佳拟合曲线,需对残差平方公式求导的出最小极值,得最佳拟合参数再根据公式求得最后结果。
4、几点思考
求解多元线性回归关键在于几点:
由公式Y=B0+B1*X1+B2*X2
为求得最佳拟合曲线,需对残差平方公式
求导的出最小极值,即得出矩阵方程
L*B=Ly。
由此公式可得最佳拟合参数B1、B2
再由公式B0=Y平均-B1*X1平均-B2*X2平均求出B0
即求解出方程。
三、相关法
a、编写自(互)相关函数计算程序,输出序列(或函数)
(1)随机信号
(2)
(3)
与
(4)
的自(互)相关函数随时间间隔变化的曲线,并回答如下问题:
(1)自相关函数是的偶函数
(2)当=0时,自相关函数具有最大值
(3)周期信号的自相关函数是同频率周期信号,不保留原信号的相位信息。
(4)随机信号的自相关函数将随的增大很快趋于0。
(5)两个同频率周期信号的互相关函数是同频率周期信号。
(6)两个非同频率的周期信号互不相关。
b、
t2
t1
要求:
(1)应用一个周期的正弦函数仿真该速度求取过程,其中渡越时间
应用相关法求取;
(2)在该正弦函数中加入一随机噪声,重新求取速度,并思考影响速度测量精度的因素有哪些?
如何提高速度测量的精度?
a、
(1)随机信号
程序代码:
y=rand(100);
Rxx=[];
fort=1:
1:
100
sum=0
forx=t:
sum=sum+y(x-t+1)/y(x);
end
Rxx=[Rxx,sum];
plot(Rxx);
生成图形如右:
由公式
x=1:
100;
y=sin(x);
%构造函数;
%定义一个空矩阵;
200;
%定义
的范围进行循环;
sum1=0;
%公式中分子上函数的卷积;
sum2=0;
%公式中分子上x(t)*x(t)的不定积分;
sum3=0;
%公式中分子上y(t)*y(t)的不定积分;
fori=1:
0.1:
%积分变量,循环积分;
sum1=sum1+sin(i)*sin(i-t);
sum2=sum2+sin(i)*sin(i);
sum3=sum2;
end;
sum=sum1/sqrt(sum2*sum3);
%求出每次的相关系数;
%将求出相关系数存入数组;
Y1=sin(2*x);
Y2=cos(2*x);
Rxy=[];
sum1=sum1+sin(2*i)*cos(2*(i-t));
sum2=sum2+sin(2*i)*sin(2*i);
sum3=sum3+cos(2*i)*cos(2*i);
Rxy=[Rxy,sum];
plot(Rxy);
Y1=sin(10*x);
Y2=cos(25*x);
sum1=sum1+sin(10*i)*cos(25*(i-t));
sum2=sum2+sin(10*i)*sin(10*i);
sum3=sum3+cos(25*i)*cos(25*i);
传感器接收到的信号分别为y=sinx,y=sin(x+1)
m=1;
fort1=0:
0.01:
5
a1=0;
a2=0;
a3=0;
forx=0:
2*pi
a1=a1+sin(x)*sin(x+1-t1);
a2=a2+sin(x)^2;
a3=a3+cos(x+1)^2;
end
r(m)=a1/sqrt(a2*a3);
m=m+1;
t1=0:
5;
plot(t1,r);
[mm,t]=max(r)
t=t/100
mm=
0.9997
t=
101
1.0100
a1=a1+(sin(x)+rand
(1))*(sin(x+1-t1)+rand
(1));
a2=a2+(sin(x)+rand
(1))^2;
a3=a3+(cos(x+1)+rand
(1))^2;
0.9581
98
0.9800
3、程序输出结果及分析
a、
(1)随机信号:
程序输出图形显示两个随机信号的相关性逐渐减小。
说明相关是用来表示两个信号之间的线性关系或相关程度,两个随机产生的信号之间存在的相似性很小,所以两个随机信号间相关程度低。
对于以上确定的函数间的相关性求解,一般在确定函数间会存在某种物理的关系,通过大量数据的采集,以及对输出结果的统计可得出相关性曲线如右侧图所示。
可知正弦函数与正弦函数本身之间,同频率的正弦函数与余弦函数之间,不同频率的正弦函数与余弦函数之间。
存在着不同的频率不同相位的正弦相关性。
并且相关性曲线的频率随着两相关函数的频率的增加而增加。
若两正弦或余弦具有相同的频率,则相关性曲线为没有重叠波纹的具有一定相位的正弦波。
若两正弦或余弦具有不同的频率,则相关性曲线会是两个不相重叠的不同频率与幅值的具有一定相位的正弦函数。
4、
几点思考
求解相关函数的相关性问题,对已知的两个确定函数可由公式
求出。
应用matlab软件对两个函数的自变量进行采样,引入
与时间tao有关的函数对其中一个函数进行平移与另一个函数
相乘,并将所有平移后的结果相加,即得出的函数反映了两个函数在时移中的相关性。
四、神经网络
1、程序清单
%bp网络的第一阶段学习期(训练加权系数wjk,vij)
%初始化
clear
clc
lr=0.5;
err_goal=0.001;
%lr为学习速率;
err_goal为期望误差最小值
max_epoch=10000;
%max_epoch为训练的最大次数
Yj=0;
Ok=0;
%置隐含层和输出层各神经元输出初值为0
X=[-1-1-1-1%提供训练集和目标值
1001
1010];
D=[0011];
%初始化wjk,vij(N为输入节点i的数量(含阈值);
M为隐含层节点j的数量;
L为输出节点k的数量)
[N,S]=size(X);
M=4;
[L,S]=size(D);
%S为训练集对数,即为样本数
vij=rand(M,N);
wjk=rand(L,M+1);
%wjk中包含阈值
vij0=zeros(size(vij));
wjk0=zeros(size(wjk));
Y=rand(5,4);
K=rand(4,1);
forepoch=1:
max_epoch
%计算隐含层各神经元输出
netj=vij*X;
Yj=1./(1+exp(-netj));
%计算输出层各神经元输出
e=[-1-1-1-1];
Y=[e;
Yj];
netk=wjk*Y;
Ok=1./(1+exp(-netk));
%计算误差函数
E=sum((Ok-D).^2)/2;
if(E<
=(err_goal))
break;
%调整输出层加权系数
fort=2:
K(t-1)=sum(Yj(t));
dwjk=lr*((1-Ok)*K)*((D-Ok).*(Ok));
wjk(1,2:
5)=wjk(1,2:
5)+dwjk;
%调整隐含层加权系数
h=(D-Ok).*(Ok).*(1-Ok);
k=lr*(K'
*(1-K))*(wjk(1,2:
5)*h'
)*X;
dvij=k'
;
vij=vij+dvij;
epoch%显示计算次数
%BP网络的第二阶段工作期(根据训练好的wjk,vij和给定的输入计算输出)
X1=X;
%计算隐含层各神经元输出
netj=vij*X1;
%计算输出层各神经元输出
vij
wjk
Ok
2、程序输出结果及分析
运行结果:
epoch=
10000
vij=
-15.254016.339816.5611
-15.16790.44180.6992
-15.19280.353316.6130
-15.801416.03910.4784
wjk=
1.0e+003*
0.0006-2.4998-2.49992.50002.5002
Ok=
0.50000.50000.50000.4999
神经网络模型包括三个层次:
输入层,输出层,隐层。
学习规则的训练步骤如下:
(1)对各权值w0j(0),w1j(0),┄,wnj(0),j=1,2,┄,m(m为计算层的节点数)赋予较小的非零随机数;
(2)输入样本对{Xp,dp},其中Xp=(-1,x1p,x2p,┄,xnp)T,dp为期望的输出向量,上标p代表样本对的序号,设样本集中的样本总数为P,则p=1,2,┄,P;
(3)计算各节点实际输出ojp(t)=f[WjT(t)Xp],j=1,2,...,m;
(4)调整各节点对应的权值,Wj(t+1)=Wj(t)+η[djp-ojp(t)]Xp,j=1,2,┄,m,其中η为学习率,用于控制调整速度,太大会影响训练的稳定性,太小则使训练的收敛速度变慢,一般取0<η≤1;
(5)返回到步骤
(2)输入下一对样本,周而复始直到对所有样本,感知器的实际输出与期望输出相等。
则上述程序中,epoch为输入次数,vij为输入层到隐层之间的权值矩阵,wjk为隐层到输出层之间的权值矩阵。
3、几点思考
神经网络能够通过对样本的学习训练,不断改变网络的连接权值以及拓扑结构,以使网络的输出不断地接近期望的输出。
这一过程称为神经网络的学习或训练,其本质是可变权值的动态调整。
BP网络是一种前向网络。
相邻两层的每一个神经元之间均有权值联系,权值的大小反映了这两个神经元之间的连接强度,整个网络的计算过程是由输入层到隐层再到输出层单向进行,所以称为前向网络。
五、遗传算法
利用遗传算法求Rosenbrock函数的极大值:
该函数有两个局部极大值点,分别是
和
,其中后者为全局最大点。
利用二进制编码遗传算法求函数极大值,并分析各算法控制参数对算法的影响。
clc;
clearall;
formatlong;
%设定数据显示格式
%初始化参数
T=100;
%仿真代数
N=80;
%群体规模
pm=0.05;
pc=0.8;
%变异、交叉概率
umax=2.048;
umin=-2.048;
%参数取值范围
L=10;
%单个参数字串长度,总编码长度2L
bval=round(rand(N,2*L));
%初始种群
bestv=-inf;
%最优适应度初值
%迭代开始
forii=1:
T
%解码,计算适应度
N
y1=0;
y2=0;
forj=1:
L
y1=y1+bval(i,L-j+1)*2^(j-1);
x1=(umax-umin)*y1/(2^L-1)+umin;
y2=y2+bval(i,2*L-j+1)*2^(j-1);
x2=(umax-umin)*y2/(2^L-1)+umin;
obj(i)=100*(x1*x1-x2).^2+(1-x1).^2;
%目标函数
xx(i,:
)=[x1,x2];
func=obj;
%目标函数转换为适应度函数
p=func./sum(func);
q=cumsum(p);
%累加
[fmax,indmax]=max(func);
%求当代最佳个体
iffmax>
=bestv
bestv=fmax;
%到目前为止最优适应度值
bvalxx=bval(indmax,:
);
%到目前为止最佳位串
optxx=xx(indmax,:
%到目前为止最优参数
end
Bfit1(ii)=bestv;
%存储每代的最优适应度
%遗传操作开始
%轮盘赌选择
fori=1:
(N-1)
r=rand;
tmp=find(r<
=q);
newbval(i,:
)=bval(tmp
(1),:
newbval(N,:
)=bvalxx;
%最优保留
bval=newbval;
%单点交叉
2:
cc=rand;
ifcc<
pc
point=ceil(rand*(2*L-1));
%取得一个1到2L-1的整数
ch=bval(i,:
bval(i,point+1:
2*L)=bval(i+1,point+1:
2*L);
bval(i+1,point+1:
2*L)=ch(1,point+1:
end
bval(N,:
%位点变异
mm=rand(N-1,2*L)<
pm;
bval(mm)=1-bval(mm);
%输出
plot(Bfit1);
%绘制最优适应度进化曲线
bestv%输出最优适应度值
optxx%输出最优参数
程序输出曲线如右图:
由得出来的曲线可以看出通过对产生数据的对具有最有适应度的个体的筛选,并进行遗传处理:
复制、交叉、变异。
使得种群中在遗传的过程中具有高适应度的个体占群体的比例逐渐增多,最终比例趋于平稳。
遗传算法的步骤:
1)定义适应度函数f(x),给出N,Pc,Pm,T;
2)随机产生N个个体s1,s2,…,sN,组成初始种群S={s1,s2,…,sN},置代数计数器t=1;
3)计算S中每个个体适应度f();
4)若终止条件满足,取S中适应度最大的个体作为结果,结束。
5)按选择概率P(xi)决定选中机会,每次从S中随机选定1个个体并将其染色体复制,共做N次,然后将复制所得的N个染色体组成群体S1;
6)按Pc决定的参加交叉的染色体数c,从S1中随机确定c个染色体,配对进行交叉操作,用新染色体代替原染色体,得S2;
7)按Pm决定的变异次数m,从S2中随机确定m个染色体,分别进行变异操作,用新染色体代替原染色体,得S3;
8)将群体S3作为新一代种群,即用S3代替S,t=t+1,转步3),即计算S中每个个体适应度f()。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代 检测 matlab
![提示](https://static.bdocx.com/images/bang_tan.gif)