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