用BP网络识别雷达测速的三类信号Word格式.docx
- 文档编号:20408697
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:15
- 大小:197.04KB
用BP网络识别雷达测速的三类信号Word格式.docx
《用BP网络识别雷达测速的三类信号Word格式.docx》由会员分享,可在线阅读,更多相关《用BP网络识别雷达测速的三类信号Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
图6
(1)卡车数据归一化后的频谱图
(2)取绝对值后的频谱图
从上面三幅图中,可以观察到信号都有明显的峰值,但是出现的位置不同,另外,信号的均值和方差明显不同。
但是考虑到雷达所测数据中,会有一些速度反常规的游离数据,所以考虑采用受游离数据影响小的平均绝对值偏差来代替样本方差作为输入特征。
同时,以数据的样本中位数来作为输入特征来减少游离数据的影响。
根据这些特征进行提取来作为输入。
三.特征提取
1.取信号归一化后的均值作为一个特征量。
2.取信号归一化后的平均绝对值偏差作为一个特征量。
3.取信号归一化后的样本中位数作为一个特征量。
4.由三幅图的比较可以发现,信号的每两点之间的起伏程度也不尽相同,所以可以设定一个特征量,来纪录信号两点间的起伏程度的大小。
5.信号在经过归一化后,可以将信号全部的值加起来,用这个总的值来作为一个特征量。
除了上述的特征,还有很多特征可以提取,但是特征越多,需要的输入神经元越多,依照隐层神经元约为输入神经元的两倍的原则,隐层的神经元也将越多。
则网络训练的时间将花费很大。
所以,本实验只提取了上述特征中的1,2,3。
四.算法与实现
根据提取的特征的维数,来决定输入神经元的个数。
因为提取的三个特征的维数分别为8,1和1,所以输入神经元的个数为10。
输出神经元的个数定为3个,考虑到被识别的三种信号分别对应三个输出,虽然用两个神经元就可以表示三种输出状态,但是用三个神经元能更好地分辨,减少出错的概率。
至于隐层的神经元个数则按照约为输入神经元个数的两倍的原则,设为20个。
当然还可以在调试过程中根据输出的识别率来找到一个一个较为合适的个数。
由BP算法非线性函数S型函数为
各输入层的神经元的输入为
,
输入层的各神经元的输出为
由公式可得
隐层输入
,j=1,2,…M
隐层输出
输出层各神经元输入为
,k=1,2,…L
输出层实际输出为
均方误差函数定义为
对所有样本可分别求出
,则总误差为
。
采用梯度下降法对权值进行调整,对于输出层与隐层间的权值以及阈值调整量为:
对于隐层与输入层之间的权值调整为
其中,
根据以上BP网络的主要算法公式来编写程序,程序语言采用Matlab。
五.程序设计流程图
(1)特征提取流程图
(2)训练神经网络流程图
(3)用神经网络识别流程图
均方误差E的收敛情况是反映神经网络性能的一个重要标准。
如果E值出现振荡,那么就要调整学习速率η的值,或者重新设置初值,直到E的值连续单调递减为止。
在刚开始调试程序的时候,E的收敛速度很慢,在改变了学习速率后,收敛速度明显加快,并且未出现震荡。
如下图7为E值的收敛图,最后稳定在10左右,迭代次数设定为2000,但基本上在1000以后变化就很小了。
图7均方误差E收敛图
六.结果与分析
类别
行人
自行车
卡车
识别率
89%
57%
94%
在识别的过程当中,卡车和行人的识别率一直都比较高,自行车的识别率较低,分析原因是因为自行车的速度有的和行人接近,有的又和卡车接近,介于卡车和自行车之间,容易出现交叠现象。
这就导致了自行车的数据有一部分被识别为行人,有一部分被识别为卡车,所以自行车的识别率相对于行人和卡车来说低一些。
所以我们要想进一步提高识别率的话,必须对三类数据进行深入的分析,针对自行车信号频谱的特点来更多地寻找一些区别于行人和卡车的有效的特征值,这样才能将识别率提高到一个较高的水平。
七.附录(源程序)
w_ji=rand(20,10);
%输入层10个,隐层20,输出层3
w_kj=rand(3,20);
theta_j=rand(20,1);
theta_k=rand(3,1);
train_num=2000;
train_file=30;
yita=0.5;
%训练样本
fornum=1:
train_num
file_num=1;
e=0;
whilefile_num<
=train_file
fort=1:
3
switcht
case1,string1='
D:
\工具\matlab\work\B\'
;
y=[100]'
case2,string1='
\工具\matlab\work\T\'
y=[010]'
case3,string1='
\工具\matlab\work\W\'
y=[001]'
end
%读取数据
string2=int2str(file_num);
string=strcat(string1,string2);
fid=fopen(string);
source_data=fscanf(fid,'
%4d'
);
fclose(fid);
%提取特征作为输入矢量x
data=fft(source_data,1024);
a=abs(data(2:
513));
%取fft变换结果的512个值的模
max_a=max(a);
min_a=min(a);
median_a=median(a);
%样本中位数,几乎不受个别游离数据影响
mad_a=mad(a);
%样本绝对值偏差,受游离数据影响小于样本标准差和方差
fori=1:
512%归一化最大最小法归一化
a(i)=(a(i)-min_a)/(max_a-min_a);
%(0,1)之间的数
8
forj=1:
64
t(j,i)=a(j+64*(i-1));
%max_t=max(t,[],1);
%min_t=min(t,[],1);
mean_t=mean(t,1);
x=[mean_tmedian_amad_a]'
%输入层输入10*1
%正向传播算法
o_i=1./(1+exp(-x));
%输入层输出10*1
x_j=w_ji*o_i-theta_j;
%隐层输入20*1
o_j=1./(1+exp(-x_j));
%隐层输出20*1
x_k=w_kj*o_j-theta_k;
%输出层输入3*1
o_k=1./(1+exp(-x_k));
%输出层输出3*1
%反向传播算法
delta_k=(y-o_k).*o_k.*(1-o_k);
%输出层误差3*1
delta_wkj=yita*delta_k*o_j'
%权值w_kj调整量;
学习率0.5
delta_thetak=yita*delta_k;
%输出层至隐含层阈值调整量
delta_j=o_j.*(1-o_j).*(w_kj'
*delta_k);
%隐层误差20*1
delta_wji=yita*delta_j*o_i'
%权值w_ji调整量
delta_thetaj=yita*delta_j;
%隐含层至输入层阈值调整量
w_ji=delta_wji+w_ji;
w_kj=delta_wkj+w_kj;
theta_k=delta_thetak+theta_k;
theta_j=delta_thetaj+theta_j;
e=e+0.5*sum((y-o_k).^2);
ife<
0.01
num=train_num;
end
file_num=file_num+1;
num=num+1;
end
%loadw1;
%识别样本
file_num=train_file+1;
recog_num=0;
whilefile_num<
=52
string1='
%d'
512%归一化
x=[mean_tmax_amin_a]'
[y,n]=max(o_k);
ifn==3
recog_num=recog_num+1;
rate=recog_num/22*100;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BP 网络 识别 雷达 测速 信号