因为最近项目要使用BP神经网络来做一些飞行预测,所以今天从图书馆借来了《Matlab神经网络30个案例分析》,这本书很不错推荐给大家,然后研究了下代码,使用语音分类这个例子做了源码实现与工具箱实现,源码实现过程中进行了小小的改变,工具箱用起来非常方便,但是手写一下BP神经网络的前向后向对于理解BP神经网络还是有极大帮助的,这里把这两种实现方式贴出来并带有结果截图。显然BP神经网络对于这种非线性拟合场合效果是非常好的。
(1) 源码实现
%% 清空环境变量
clc
clear
%% 训练数据预测数据提取及归一化
%下载四类语音信号
load data1 c1
load data2 c2
load data3 c3
load data4 c4
%四个特征信号矩阵合成一个矩阵
data(1:500,:) = c1(1:500,:);
data(501:1000,:) = c2(1:500,:);
data(1001:1500,:) = c3(1:500,:);
data(1501:2000,:) = c4(1:500,:);
%从1到2000产生随机数
k = rands(1,2000);
[m,n] = sort(k);
%%提取输入、输出数据
input= data(:,2:25);
output1= data(:,1);
%将输出数据由一维变为四维
for i = 1:1:2000
switch output1(i)
case 1
output(i,:) = [1 0 0 0];
case 2
output(i,:) = [0 1 0 0];
case 3
output(i,:) = [0 0 1 0];
case 4
output(i,:) = [0 0 0 1];
end
end
%随机提取1500个测试数据,500个样本为预测数据
input_