- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 1
指导教师:刘勇
自评分:96
理由:率先写完程序+上课认真
FEC编码报告
院系:机电学院通信系
姓名: 王聪
学号: 20101002419
班号: 075102
日期:2012年9月25日
目录
摘要1
编程思路1
流程图1
各个模块及重要语句3
程序运行截图5
数据分析6
总结7
参考文献8
附录9
PAGE 1
摘要
本次上机实习通过Matlab软件对FEC编码信号传输过程中的丢失进行模拟,得出误码率和丢失率的图像。通过本次上机,更深入地理解了FEC编码的原理,也学习到了很多Matlab的知识,锻炼了自己的编程能力。
编程思路
整个程序最关键的就是模拟被FEC编码的信号在传输过程中的丢失,首先要找到被传输的数据,为了便于获得大量的数据,我通过Matlab自带的函数imread对图像进行读取,因为搜索到的图像为3原色RGB图像,故通过imread函数会得到3个矩阵,而我们只需要用一个矩阵,通过rgb2gray函数将彩色图像转换成黑白图像,而黑白图像的每一个像素由八个字节组成,正好构成一帧,我才用了480*640像素的图片,这样就得到了一个480*640的矩阵imgGray,矩阵中的每个元素就是一个帧;下面一步就是开始进行分组,我令4帧原来的数据加上一个由这4帧异或得到的纠错冗余帧共5帧来构成一组,新建一个矩阵hacker,每行5列,即一行就代表了一组,然后通过计算得到所需要的行数,把原始数据搬到新矩阵的过程中同时进行异或得到一组中的第五个元素,这样就得到了一个新的矩阵,分组的工作也完成了。下面我要进行的最重要的一步就是模拟FEC编码后的信号在传输过程中的丢失,新的矩阵是76800行,5列,那么我可以通过randsrc函数对应地生成与新矩阵大小一样的0、1随机数序列矩阵P,由于0、1出现的概率可以设定,那么我采用0为丢失,1为保留,这样我就可以设定整个信号的丢包率p,再通过循环和选择函数,将矩阵hacker和矩阵P进行比较,hacker中元素在P中对应的元素是0的话,则将hacker中相应元素赋值0,即表示丢掉了,设置一个变量k,在丢失过程中,每丢失一个元素就将k加1,由于每组的第5帧比较特殊,所以给第5帧一个变量b作为其丢失的标志位,这样经过多次循环,我们即可知道总共丢失了多少数据,最后与原来总数据量一除,就可以得到对应丢包率p下的误码率,p的范围从0到100,这样通过描点画图即可得到最终的误码率—丢包率的函数图象。
流程图
Y开始读取图象数据得到矩阵imgGray
Y
开始
读取图象数据得到矩阵imgGray
新建矩阵hacker用于存放分组和冗余帧
将矩阵imgGray的元素按照5个一组存放到矩阵hacker中
p=100
初始化丢失率p=1
产生一个与hacker行列相同的0、1矩阵P,其中0出现的概率为p/100
将矩阵P与hacker对比,将对应P中为0的对应的hacker中的元素置0,表明丢弃
计算丢失率p/100误码率
画出误码率和丢包率的函数图象
结束
N
各个模块及重要语句
读取图像模块
通过imread函数对图像进行读取,然后再通过rgb2gray函数将图像转换成灰度图像。
imgRgb = imread(filename);
imshow(imgRgb);
imgGray = rgb2gray(imgRgb);
figure
imshow(imgGray);
分组并产生冗余项模块
通过size函数得到灰度图像矩阵的行和列以便分组,新建一个hacker矩阵用于存放新的分组,再通过双重for循环进行分组并通过多重嵌套的bitxor计算冗余项。
[m,n]=size(imgGray);
hacker= NaN(m*n/4,5);
for i=1:m
for j=1:n
s=mod(j,4);
if(s==0)
hacker(u,1)= imgGray(i,j-3);
A=hacker(u,1);
hacker(u,2)= imgGray(i,j-2);
B=hacker(u,2);
hacker(u,3)= i
文档评论(0)