不能对其分类,此结果恰恰证明了前面所述的结论。
2 线性神经网络MatLab上机实验
例2.1
假设输入和期望输出为:
>> P=[1 2 3]
>> T=[2.0 4.2 5.9] 设计网络:
>> net = newlind(P,T); 通过对输入量进行仿真:
>> O=sim(net,P) O =
2.0833 4.0333 5.9833
可见,网络的输出已经非常接近期望的输出值。 例2.2
假设输入和期望输出为:
>> P=[2 1 -2 -1;2 -2 2 1]; >> T=[0 1 0 1]; 设计网络:
>> net = newlin(minmax(P),1); 训练网络:
>> net.trainParam.goal=0.1; >> net = train(net,P,T);
>> net.IW{1,1}
ans =
-0.0615 -0.2194
>> net.b{1,1}
ans =
0.5899
网路仿真:
>> O=sim(net,P)
O =
0.0282 0.9672 0.2741 0.4320
>> err=T-O
err =
-0.0282 0.0328 -0.2741 0.5680
>> mse(err)
ans =
0.0999 例2.3
为了测定刀具的磨损速度,做这样的实验:经过一定时间(如每隔一小时),测量一次刀具的厚度,得到一组实验数据如下: 时间 刀具厚度 0 27.0 1 26.8 2 26.5 3 26.3 4 26.1 5 25.7 6 25.3 7 24.8 试根据上面的实验数据建立一个大体合适的神经网络。 解:
t=[0 1 2 3 4 5 6 7];
y=[27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8]; plot(t,y,'*');
net=newlind(t,y); %根据t和y设计一个具有最小均方误差的线性神经网络 O=sim(net,t); %用输入t来仿真该网络 plot(t,O,t,y,'*'); e=y-O %期望输出-实际输出
mse = mse(y-O) %网络的均方误差值 w=net.iw{1,1} %权值 b=net.b{1,1} %阈值 时间 期望输出 实际输出 偏差 0 27.0 27.13 1 26.8 26.82 2 26.5 26.52 3 26.3 26.21 4 26.1 25.91 5 25.7 25.61 6 25.3 25.30 7 24.8 25.00 -0.13 -0.02 -0.02 0.09 0.19 0.09 -0.00 -0.20 网络权值:-0.3036 网络阈值:27.1250 网络均方误差:0.0135 所拟合的直线:y=-0.3036*t+27.1250
例2.4
已知一输入信号T=sin(time*pi),其中time=0:0.1:5,构建一个神经网络,利用该组信号的5个过去值预测信号的将来值。 解:
clc;%清空命令窗口 clear;%清空内存 time=0:0.1:5; T=sin(time*pi); Q=length(T);
X=zeros(5,Q);%X中存储信号T的前5次值,作为网络输入。 X(1,6:Q)=T(1,1:(Q-5)); X(2,5:Q)=T(1,1:(Q-4)); X(3,4:Q)=T(1,1:(Q-3)); X(4,3:Q)=T(1,1:(Q-2)); X(5,2:Q)=T(1,1:(Q-1)); plot(time,T);%绘制信号T曲线 xlabel('时间'); ylabel('目标信号'); title('待预测信号'); net=newlind(X,T); O=sim(net,X); figure;
plot(time,T,time,O,'r'); xlabel('时间'); ylabel('输出-目标'); title('输出信号和目标信号');