gusucode.com > 《MATLAB神经网络超级学习手册》随书光盘源码程序 > code/9/N9_7.m

    clear all
clc
%%%%%%%定义输入向量和目标向量%%%%%%%%%
time1=0:0.06:(1.5*pi);
t1=time1/(1.5*pi)-0.5;
time2=1.5*pi:0.06:(3*pi);
t2=1.5-time2/(1.5*pi);
time=[time1 time2];
t=2*[t1 t2];%目标向量
p=(1+t).*cos(20*time);%输入向量

%%%%%%创建Elman网络%%%%%%%%%%%%%%%%%
%创建网络
net=newelm(minmax(p),[20 1],{'tansig','purelin'},'traingdx');
%训练网络
%将输入向量矩阵转换为输入序列
Pseq=con2seq(p);
%将目标向量矩阵转换为目标序列
Tseq=con2seq(t);
figure(1)
%画出调制信号和已调波形
plot(time,p,time,1+t,'r--')
hold on
pause;
net.trainParam.epochs=1000;
[net,tr]=train(net,Pseq,Tseq);


%%%%%%%仿真%%%%%%%%%%%%%%%%%%%%%%
%以三角波进行仿真
time1=0:0.05:2*pi;
t1=time1/(2*pi)-0.5;
time2=2*pi:0.05:4*pi;
t2=1.5-time2/(2*pi);
time=[time1 time2];
%目标向量
t=[t1 t2];
%形成三角波调制的已调波信号
p=(1+t).*cos(20*time);
figure(2)
subplot(1,2,1);
%绘制三角波调制的已调波信号
plot(time,p)
%将输入向量矩阵转换为输入序列
Pseq=con2seq(p);
%网络仿真
a=sim(net,Pseq);
%将输出序列转换为矩阵形式
y=seq2con(a);
subplot(1,2,2);
%绘制网络输出信号波形和调制信号波形
plot(time,y{1},time,t,'r--');
hold on

%以正弦波调制进行仿真
t=0.5*sin(time);
%形成正弦波调制的已调波信号
p=(1+t).*cos(20*time);
figure(3)
subplot(1,2,1);
%绘制正弦波调制的已调信号
plot(time,p);
Pseq=con2seq(p);
a=sim(net,Pseq);
y=seq2con(a)
subplot(1,2,2);
%绘制网络输出信号波形和调制信号波形
plot(time,y{1},time,t,'r--');
hold on

%以矩形波调制进行仿真
t=0.5*sign(sin(time));
%形成矩形波调制的已调波信号
p=(1+t).*cos(20*time);
figure(4)
subplot(1,2,1);
%绘制矩形波调制的已调信号
plot(time,p);
Pseq=con2seq(p);
a=sim(net,Pseq);
y=seq2con(a)
subplot(1,2,2);
%绘制网络输出信号波形和调制信号波形
plot(time,y{1},time,t,'r--');
hold on