通信原理大作业用matlab仿真1.幅频失真S(t)=sint+1/3sin3t,S’(t)=sint+sin3t;相频失真S(t)=sint+1/3sin3t,S’(t)=sin(t+2pi)+1/3sin(3t+3pi).程序:x=0:pi/20:3*pi;y1=sin(x)+(sin(3*x))/3;y2=sin(x)+sin(3*x);y3=sin(x+2*pi)+(sin(3*x+3*pi))/3;figure(1)plot(x,y1);hold onplot(x,y2,'r-');legend('S(t)=sint+1/3sin3t','S(t)=sint+sin3t')figure(2)plot(x,y1);hold onplot(x,y3,'r-');legend('S(t)=sint+1/3sin3t','S(t)=sin(t+2*pi)+1/3sin(3t+3*pi)')幅频失真相频失真2. 将输入的一串0,1编码1) 转换成AMI 码 2) 转换成HDB3码 3) 转换成双相码 4) 转换成Miller 码 5) 转换成CMI 码 总流程开始输入数组依次显示五种码形结束转换成AMI 码转换成CMI码转换成HDB3码转换成双相码转换成Miller码转化成五种码具体流程思路:数组xn 中0保持不变;并统计1个数,当为偶数1保持不变;当为奇数1变换为-1 1) 转换成AMI 码 nono no得到数组xnXn (i )是否=1num=num+1num 是否为偶数 得到数组xn 长度k i=1; num=0yn(i)=xn(i)yn(i)=xn(i)yn(i)= -xn(i)i 是否=k 得到数组yn i=i+12) 转换成HDB3码 思路:在AMI 码基础上1. 当出现第一个四个连0 时v=前一个非0数2. 当出现四个连0,v 和-v 交替出现3. 判断破坏脉冲是否成立,如果不成立四个连0的第一个0做相应变换(即添加B ) 以后的1也要取负得到v(1)是否是得到数组yni=1yn (i )是否=0 num=num+1 num=0num 是否=4v=yn(i-4)否否否 否否得到数组yn i=1 sign=1 num=0yn (i )是否=0num=num+1num 是否=4yh(i)=v(sign)sign 是否为偶数 yh(i)= -v(sign)yh(i)是否=yh(i-4) yh(i-3)=yh(i) yh(i:k)=Yh(i:k )i 是否=k 得到数组yhi=i+13) 转换成双相码思路:1.当出现0转换为01 2.当出现1转换为10;nono得到数组xn得到数组xn 长度kys(2i-1)=0;ys(2i-2)=1Xn(i)是否=0i=1ys(2i-1)=1;ys(2i-2)=0i 是否=k 得到数组ys i=i+14) 转换成密勒码 思路:1.当第一个数出现1时转换成10;否则转换为002.以后当出现1时对应的第一个码不变,第二个变化;当出现一个0对应的两个码元都不变;出现连0对应的两个码元都变化。
nono no得到数组xn得到数组xn 长度ki=1Xn(i)是否=0ym(2i-1)=ym(2i-2); ym(2i-2)=~ym(2i-1)是否为连0ym(2i-1)=~ym(2i-2); ym(2i-2)=ym(2i-1)ym(2i-1)=ym(2i-2); ym(2i-2)=ym(2i-1)i 是否=k 得到数组ym i=i+15) 转换成CMI 码 思路:1.当为0转换为012.当为0 时11和00交替出现 nono得到数组xn得到数组xn 长度ki=1;num=0 Xn(i)是否=1yc(2i-1)=0;yc(2i-2)=1num=num+1num 是否为偶数 yc(2i-1)=0; yc(2i-2)=0yc(2i-1)=1;yc(2i-2)=1 i=i+1i 是否=k得到数组yc仿真结果:cleart=input('请输入一组0,1: ','s');%0,1 之间要有空格隔开xn=str2num(t)yn=xn;%AMI码num=0;for k=1:length(xn)if xn(k)==1num=num+1;if num/2==fix(num/2)yn(k)=1;elseyn(k)=-1;endendendnum=0;%HDB3yh=yn;sign=1;V=zeros(1,length(yn));for k=1:length(yn)if yn(k)==0num=num+1;if num==4v(1)=yh(k-4);breakendelsenum=0;endendfor k=1:length(yn)if yn(k)==0num=num+1;if num==4num=0;yh(k)=v(sign);v(sign+1)=-v(sign);if yh(k)==yh(k-4)elseyh(k-3)=yh(k);yh(k+1:length(yn))=-1*yh(k+1:length(yn));endsign=sign+1;endelsenum=0;endendys=zeros(1,2*length(xn));for k=1:length(xn)%双相码if xn(k)==0ys(2*k-1)=0;ys(2*k)=1;elseys(2*k-1)=1;ys(2*k)=0;endendym=zeros(1,2*length(xn));%密勒码if xn(1)==1ym(1)=1;ym(2)=0;elseym(1)=0;ym(2)=0;endfor k=2:length(xn)if xn(k)==0num=num+1;if num>1ym(2*k-1)=xor(1,ym(2*k-2)); ym(2*k)=ym(2*k-1);elseym(2*k-1)=ym(2*k-2);ym(2*k)=ym(2*k-1);endelseym(2*k-1)=ym(2*k-2);ym(2*k)=xor(1,ym(2*k-2));num=0;endendyc=zeros(1,2*length(xn));%CMIfor k=1:length(xn)if xn(k)==1num=num+1;if num/2==fix(num/2)yc(2*k-1)=1;yc(2*k)=1;elseyc(2*k-1)=0;yc(2*k)=0;endelseyc(2*k-1)=0;yc(2*k)=1;endsubplot(5,1,1);stairs([0:length(xn)-1],yn);axis([0 length(xn)-2 2]);title('AMI 码')subplot(5,1,2);stairs([0:length(xn)-1],yh);axis([0 length(xn)-2 2]);title('HDB3码')subplot(5,1,3);stairs([0:2*length(xn)-1],ys);axis([02*length(xn) -2 2]);title('双相码')subplot(5,1,4);stairs([0:2*length(xn)-1],ym);axis([02*length(xn) -2 2]);title('密勒码')subplot(5,1,5);stairs([0:2*length(xn)-1],yc);axis([02*length(xn) -2 2]);title('CMI 码')3. 产生2ASK,2FSK,2PSK,2DPSK 信号,并进行解调(四种信号选一)思路2ASK :当调制的数字信号为1时,传输载波;为0时,不传输载波;2FSK :当调制的数字信号为1时,传输载波)2sin(t π;为0时,传输载波)4sin(t π;2PSK : 当调制的数字信号为1时,载波初相位为π;为0时,载波初相位为0;2DPSK:当调制的数字信号为1时,载波相位加π;为0时,载波相位不变;相干解调x=[1,1,0,0,0,1,0,1,1,0]figure(1)for i=1:length(x);t=i-1:.01:i;s1=sin(2*pi*t)*x(i);s2=sin(2*pi*t)*x(i)+sin(4*pi*t)*xor(1,x(i)); s3=sin(2*pi*t+pi*x(i));subplot(4,1,1)plot(t,s1);title('2ASK')hold onsubplot(4,1,2)plot(t,s2);title('2FSK')hold onsubplot(4,1,3)plot(t,s3);title('2PSK')hold onendhold ony=zeros(1,length(x)+1);y(1)=1;for i=1:length(x)if x(i)==1y(i+1)=xor(y(i),1);elsey(i+1)=y(i);endendfor i=1:length(y);t=i-1:.01:i;s4=sin(2*pi*t+pi*y(i));subplot(4,1,4)plot(t,s4);title('2DPSK')hold onendfigure(2)for i=1:length(x);t=i-1:.01:i;a3=sin(50*pi*t)*x(i);a1=a3.*sin(50*pi*t);wp=2*pi*50*0.5;ws=2*pi*50*0.9;As=45;Rp=2;[N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');%低通滤波h=tf(B,A); %转换为传输函数a2=lsim(h,a1,t);a4=1*(a2>0.25);subplot(4,1,1)plot(t,a3);title('2ASK')hold onsubplot(4,1,2)plot(t,a1);title('乘以相干载波')hold onsubplot(4,1,3)plot(t,a2);title('通过低通滤波器后')hold onsubplot(4,1,4)plot(t,a4);title('经过抽样判决后'),axis([0 10 0 1.2]); hold onend。