您好,欢迎访问三七文档
多媒体通信实验报告姓名:学院:班级:学号:专业:指导老师:完成时间:实验一FEC前向纠错码仿真一、实验目的1.学会运用matlab编程环境进行实验仿真;2.深入了解FEC前向纠错码的基本原理;3.学会分析基本原理,编写程序仿真验证结果。二、实验要求1.掌握FEC前向纠错码的基本原理,并根据该原理编写程序进行matlab仿真;2.运行matlab程序,对仿真得到的结果进行分析。三、实验原理前向纠错(ForwardErrorCorrection,FEC)编码,也叫“前向纠错码”,是增加数据通讯可信度的方法。将传输的数据分割成帧,并由数据帧异或得到校验帧,校验帧随同数据帧一起在信道上传输,当接收端接收数据帧和校验帧后,收到的帧进行检验。如果收到的校验帧没错,就可以对有限的错误数据帧进行纠错;反之,则不能对数据帧进行纠错。FEC编码常用的传输码率有4/5、5/6、6/7、7/8等。四、实验内容这里采用4/5的码率进行FEC编码的仿真,即由四个数据帧加上由四个数据帧异或得到的一个校验帧构成长度为5帧的发送帧,当校验帧没错并且数据帧只有1帧发现错误时,则可以利用校验帧与其他3帧数据异或得到正确的数据帧来纠正错误的数据帧。其他情况,都不能进行纠错。在matlab仿真实验中,采用图片信息作为数据在模拟丢包率的状态下进行FEC编码,并计算在传输过程中,不同丢包率下的FEC编码的丢包率以及时延。具体实验过程如下:采集给定图像的信息,将彩色图像转化为灰度图像,并将图像数据保存在一个二维数组中。灰度图像如图1所示。图1原始灰度图像对图像进行FEC编码,并在模拟信道丢包率的状态下传输,得到输出的图像数据,将FEC编码纠错前的图像打印出来,这里选取的模拟信道丢包率为10%,打印出的图像如图2所示。图2FEC编码过程中,当满足FEC纠错条件,即校验帧正确,数据帧只有一帧出错,就可以对图像数据进行纠正。当模拟信道丢包率为10%时,采用FEC编码纠错的原理,对FEC纠错前的图像数据进行更正。FEC纠错后的图像如图3所示。图3FEC纠错前图像(丢包率为10%)FEC纠错后图像(丢包率为10%)最后统计在不同的模拟信道丢包率的情况下,经过FEC编码处理后,数据帧发生的丢包率,统计图像如图4所示。图4在FEC编码后,在不同模拟信道丢包率下,FEC编码的纠错时延情况如图5所示。图500.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.91模拟信道丢包率FEC丢包率0.10.20.30.40.50.60.70.80.91020040060080010001200纠错时延模拟信道丢包率时延(单位:帧时间)五、实验分析1.由图1、图2、图3三幅图片对比可知,在模拟信道丢包率为10%的情况下,FEC编码纠错前后,图像变化明显,说明FEC编码在对数据帧纠错的方面有一定的效果,可以使的图片效果得到明显改善。2.上述分析在模拟信道丢包率为10%时候的结果,对于不同模拟信道丢包率的情况下,模拟丢包率越大,FEC编码纠错的能力越差。由图4可知,在模拟丢包率为25%一下时,FEC编码能纠正错误;当模拟丢包率超过25%时,就不具备纠错能力。说明FEC编码使用于小丢包率的信道传输系统中。附录:源程序yuanPIC=imread('lufei.jpg');[rows,cols,colors]=size(yuanPIC);midGrayPIC=zeros(rows,cols);midGrayPIC=uint8(midGrayPIC);fori=1:rowsforj=1:colssum=0;fork=1:colorssum=sum+yuanPIC(i,j,k)/3;%进行转化的关键公式,sum每次都因为后面的数字而不能超过255endmidGrayPIC(i,j)=sum;endendimwrite(midGrayPIC,'gray.jpg','jpg');%将灰度图像保存到图像文件a=reshape(midGrayPIC,[],32);[m,n]=size(a);f=zeros(m,40);f(1:m,1:32)=a;b=zeros(m,8);c=zeros(m,8);d=zeros(m,8);e=zeros(m,8);b(1:m,1:8)=a(1:m,1:8);c(1:m,1:8)=a(1:m,9:16);d(1:m,1:8)=a(1:m,17:24);e(1:m,1:8)=a(1:m,25:32);h=bitxor(b,c);j=bitxor(d,e);z=bitxor(h,j);%检验帧f(1:m,33:40)=z;flag=zeros(1,4);x=0;k=1;temp=0;forj=1:100cnt=0;%丢包数t=0;fori=1:(5*m)%共5*m帧p=unifrnd(0,100);%产生0~100的随机数,pj用于产生概率%----------ifrem(i,5)==0&pjx=1;%用于标记校验帧出错的情况endifpj&rem(i,5)~=0temp=temp+1;ifrem(i,5)==1f(ceil(i/5),1:8)=[00000000];flag(1,1)=1;endifrem(i,5)==2f(ceil(i/5),9:16)=[00000000];flag(1,2)=1;endifrem(i,5)==3f(ceil(i/5),17:24)=[00000000];flag(1,3)=1;endifrem(i,5)==4f(ceil(i/5),25:32)=[00000000];flag(1,4)=1;endend%--------ifrem(i,5)==0&temp==1&x~=1cnt=cnt+temp-1;t=t+1;ifflag(1,1)==1f(i/5,1:8)=a(i/5,1:8);endifflag(1,2)==1f(i/5,9:16)=a(i/5,9:16);endifflag(1,3)==1f(i/5,17:24)=a(i/5,17:24);endifflag(1,4)==1f(i/5,25:32)=a(i/5,25:32);endendifrem(i,5)==0&temp=2&x==1cnt=cnt+temp;%该组校验帧出错,丢包个数的计算方法,任何一组出错的数据帧为1的均不丢包endifrem(i,5)==0&temp=2&x~=1cnt=cnt+temp;end%temp用于记录每组的丢失帧,每组进行一次初始化ifrem(i,5)==0x=0;temp=0;flag=[0000];end%------endpercent(k)=cnt/(4*m);%用于记录各种模拟丢包率下的丢包率tt(k)=t;k=k+1;endfecqPIC=uint8(reshape(f(1:m,1:32),rows,cols));imwrite(fecqPIC,'gray1.jpg','jpg');figure(1);imshow('gray.jpg');title('原始灰度图像');figure(2);imshow('gray1.jpg');title('FEC纠错后图像(丢包率为10%)');figure(3);j=1:100;plot(j/100,percent(j));xlabel('模拟信道丢包率');ylabel('FEC丢包率');figure(4)j=1:100;plot(j/100,tt(j));gridon;axistight;title('纠错时延');xlabel('模拟信道丢包率');ylabel('时延(单位:帧时间)');实验二交织编码仿真一、实验目的1.学会运用matlab编程环境进行实验仿真;2.深入了解交织编码的基本原理;3.学会分析交织编码的基本原理,编写程序仿真验证结果。二、实验要求1.掌握交织编码的基本原理,并根据该原理编写程序进行matlab仿真;2.运行matlab程序,对仿真得到的结果进行分析。三、实验原理交织编码是把一个较长的突发差错离散成随机差错。交织深度越大,则离散度越大,抗突发差错能力也就越强。但交织深度越大,交织编码处理时间越长,从而造成数据传输时延增大,也就是说,交织编码是以时间为代价的。因此,交织编码属于时间隐分集。在实际移动通信环境下的衰落,将造成数字信号传输的突发性差错。利用交织编码技术可离散并纠正这种突发性差错,改善移动通信的传输特性。四、实验内容根据交织编码的原理,运用matlab的rand()函数产生一个随机数组,然后对随机数组进行编码,最后在不同模拟信道丢包率的情况下,进行交织编码的传输,统计最后的丢包率,以及时延。取随机数组的大小为200*200,即一共40000个元素,对这个数组进行交织编码后,在模拟信道环境中传输,仿真统计后的误码率与模拟信道丢失率的关系如图1所示。图100.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.91不同信道噪声下交织编码误码率(未纠错)信道噪声误码率画出交织前后序列的幅度图像,由于40000个数据量太大,画出的图像看的不太清楚,故采用400个数据,作出图像如下图2所示。图2另外,作出交织编码的传输时延如图3所示。图3501001502002503003504002025303540原序列序列长度序列幅度50100150200250300350400203040解交织序列序列长度序列幅度50100150200250300350400100200300400500600700交织编码传输时延序列长度传输时延(单位:码元时间)五、实验分析1.交织编码能将突发错误数据串经过交织后变成随机错误,这种错误是不能更正的,但是对于语音信号的处理将会很有用,因为语音信号中的随机错误并不会给语音信号带来大的影响。只有突发错误导致语音信号中一些数据串出错或者丢失,则会导致该部分语音信号的丢失,缺失一段语音。2.对于交织编码,交织编码的时延将会随着交织序列的长度的增加而增加,所以交织编码不适宜处理较多的数据,否则,延时带来的影响严重。附录:源代码x=15;y=45;n=400;sum=0;R=x+(y-x)*rand(1,n);R1=(reshape(R,20,(n/20)))';ERR=0:0.01:1;fori=1:length(ERR)errors=rand(size(R1))ERR(i);R2=R1+errors;R3=reshape(R2,1,n);R4=reshape(R3,(n/20),20);R5=reshape(R4',1,n);R6=R5-R;forj=1:length(R6)ifR6(j)~=0sum=sum+1;endendp(i)=sum/n;sum=0;endfigure(1);i=1:length(ERR);plot(ERR(i),ERR(i),'b');holdonplot(ERR(i),p(i),'r');gridon;axistight;title('不同信道噪声下交织编码误码率(未纠错)');xlabel('信道噪声');ylabel('误码率');figure(2);m=1:n;subplot(211)plot(m,R,'r');gridon;axistight;title('原序列');xlabel('序列长度');ylabel('序列幅度');subplot(212)plot(m,R5,'b');gridon;axistight;title('解交织序列');xlabel('序列长度');ylabel('序列幅度');figure(3);m=1:n;t=2*m-(2*m/20)+2;plot(m,t);gridon;axistight;title('交织编码传输时延');xlabel('序列长度');ylabel('传输时延(单位:码元时间)');FEC前向纠错编码与交织编码对比分析对于这两种编码
本文标题:多媒体通信实验报告
链接地址:https://www.777doc.com/doc-2504037 .html