信号处理课程设计2要求.docx
- 文档编号:23730764
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:19
- 大小:366.42KB
信号处理课程设计2要求.docx
《信号处理课程设计2要求.docx》由会员分享,可在线阅读,更多相关《信号处理课程设计2要求.docx(19页珍藏版)》请在冰豆网上搜索。
信号处理课程设计2要求
2013级信号处理课程设计2
一、要求:
(1)自由组合为4个小组,每组5人,另外还剩余2人成为第5小组。
必须团队合作完成此次设计。
课题分为三大题,1组、4组完成第一题,2组完成第二题,3组完成第三题,第5小组的两人可以从第二题任选两个小题独立而暗沉。
其余每组同学分别选大题中的一个小题完成。
(2)课题可以基于Matlab完成,也可以自选其他语言,如c语言、C#、Java等均可。
(3)认真作好课程设计报告,报告内容包括:
设计题目、实验原理、程序设计原理及步骤、程序清单(必要的注释)、程序运行结果及结果的验证和分析,以及课程设计总结、参考文献等。
(4)课程设计成果提交包括:
课程设计报告和Matlab程序文档(.m格式)。
成果打包成.rar格式,命名为“学号姓名”,例如“2013xxxx刘波.rar”。
每组同学可以独自提交自己的实验结果,但是组成员之间不能重复完成一个小题。
(5)验收和提交:
19周周四(7月7日)9点开始到教研室c区102进行验收,自带笔记本电脑。
各同学将程序和报告交给班长汇总,并发送到老师的邮箱。
二、信号处理课程设计
(一)目的
本课程设计课题主要目的是加深对《信息论与编码》课程中理论内容的理解,并通过实践操作,实现所要求主要内容的仿真。
通过完成本课题的设计,主要达到以下几个目的:
1.熟练掌握信源编码、信道编码中主要编码的具体算法以及相关理论知识的原理。
2.做到理论与编程实践相结合,从实践中加深对理论内容的理解。
3.会用Matlab或其他编程语言对相关编码算法或理论知识进行仿真。
4.验证理论结果与仿真结果的一致性。
(二)设计所需的软硬件
PC机一台、Matlab或TurboC2.0或VisualC++软件开发平台
(三)设计原理与内容
序:
可能用到的函数
disp即display,可用来显示字符串、计算结果等
fprintf函数可以将数据按指定格式写入到文本文件中,也可以显示字符串、计算结果。
input在command窗口从键盘输入数值给变量
switch开关语句,后面接case选择要进行的操作
课题一:
信源编码的实现,包括以下5个小题。
(1)、霍夫曼编码(HuffmanEncoding)
(2)、费诺编码(FanoEncoding)
(3)、香农编码(ShannonEncoding)
(4)、算术编码(ArithmeticEncoding)
(5)、游程编码(RunlengthEncoding)
内容:
(1)、霍夫曼编码编码原理和具体要求:
要求选该题的同学完成一个信源单符号编码算法的设计,可以按照自己的能力设计一个能对任意输入的概率序列普遍适用的编码方法,也可以针对给定概率空间
设计一个具体的编码算法,实现对其进行编码并输出码字结果。
参考:
(2)、费诺编码的原理和要求
费诺编码的原理:
(a)将概率按从大到小的顺序排列
(b)将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。
(c)将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。
(d)将每一分组再按同样原则划分,重复b和c,直到概率不再可分。
(e)信源符号所对应的码字即为费诺码。
要求同1霍夫曼编码.
参考:
(3)、香农编码的原理和要求
香农编码的原理:
(a)将信源发出的N个消息符号按其概率的递减次序依次排列。
(b)按下式计算第i个消息的二进制代码组的码长,并取整(提示:
Matlab中向上取整函数是ceil())。
(c)为了编成唯一可译码,首先计算第i个消息的累加概率
(d)将累加概率Pi(为小数)变成二进制数
(e)除去小数点,并根据码长li,取小数点后li位数作为第i个消息的码字。
要求同1霍夫曼编码.
参考:
(4)、算术编码原理和具体要求:
算术编码的基本思路是:
从全序列出发,将各信源序列的概率映射到[0,1]区间上,使每个序列对应这区间内的—点,也就是一个二进制的小数。
这些点把[0,1]区间分成许多小段,每段的长度等于某一序列的概率。
再在段内取一个二进制小数,其长度可与该序列的概率匹配,达到高效率编码的目的。
这种方法与香农编码法有些类似,只是它们考虑的信源序列对象不同,算术码中的信源序列长度要长得多。
如果信源符号集为
,信源序列
,
,共有
种可能序列。
由于考虑的是全序列,也许是整页纸上的信息作为一个序列,因而序列长度L很大。
不同的符号有小同的小区间,它们互不重叠,所以可将这种小区间内的任一个点作为该符号的代码。
以后将计算这代码所需的长度,使之能与其概率匹配。
从关于积累概率F(Si)=p(S0)+p(S1)+p(S2)+……+p(Si-1)的计算中可看出,积累概率把区间[0,1]分割成许多小区间,每个小区间的长度等于各序列的概率
,而这小区间内的任一点可用来代表这序列。
现在来讨论如何选择这个点。
令
(1)
把积累概率写成二进位的小数,取其前L位,以后如果有尾数,就进位到第L位,这样得到一个数C。
例如
,
,则L=5,得
这个C就可作为S的码字。
因为C不小于
,至少等于
。
又由(3)式可知
。
令(S+1)为按顺序正好在S后面的—个序列,则
。
当
在第L位以后没有尾数时,
就是C,上式成立;如果有尾数时,这尾数就是上式的左右两侧之差,所以上式也成立。
由此可见C必在
和
之间,也就是在长度为
的小区间(左闭有开的区间)内,因而是可以唯一地译码的。
这样构成的码字,编码效率是很高的,因为已可达到概率匹配,尤其是当序列很长时。
由
(1)式可见,对于长序列,
必然很小,L与概率倒数的对数已几乎相等;也就是取整数所造成的差别很小,平均代码长度将接近S的熵值。
实用中,采用积累概率
表示码字
,符号概率
表示状态区间
,则有
(2)
对于二进制符号组成的序列,
。
实际编码过程是这样的:
先置两个存储器C和A,起始时可令
,
,其中
代表空集。
每输入一个信源符号,存储器C和A就按照(4)式更新一次,直至程序结束,就可将存储器C的内容作为码字输出。
由于
是递增的,而这增量随着序列的增长而减小,因为这增量是序列的概率与信源符号序列的积累概率的乘积;所以C的前面几位一般已固定,在以后计算中不会被更新,因而可以输出。
只需保留后面几位用作更新。
译码也可逐位进行,与编码过程相似。
例1有简单的四个符号a,b,c,d构成序列
各符号及其对应概率如下表所示:
算术编解码过程如下:
设起始状态为空序列
,则
,
。
递推得
上述编码过程可用下列单位区间的划分来描述:
要求
假设某条信息中可能出现的字符有abcde中的任意几种,请用算术编码方法将其中几种字符组成的简短序列进行编码。
(5)、游程编码(RLE-RunLengthEncoding)原理和具体要求:
游程编码适合有较多灰度相同对象的图像,例如海洋、湖泊的卫星图像,医学图像中的细胞,染色体,材料的显微图像等。
计算机中的PCX和BMP格式的图像都采用游程编码进行压缩。
RLE的原理相当简单,计算效率高。
游程编码的原理很简单:
将一行中颜色值相同的相邻像素用一个计数值和该颜色来代替。
例如在下图所示的图像元素可以编码为(5,3)(3,1)(4,4)(4,2)(3,2)(2,1)(3,1)(2,2)。
5
5
5
3
4
4
4
4
4
4
3
3
2
3
2
2
图游程编码示意图
下面讨论一下RLE编码的效率:
设图像的灰度级为M,一行的长度为N,则对每一行来说,游程数最少为1,最多为N。
若将数对表示为(gk,lk)的序列,用普通二进制码存放(gk,lk)序列,并设一行中的游程数为
,则描述一行像素的码字长度为:
而直接存储原图像一行所需的位数为
。
显然,只有当
<<
时,RLE的描述才是可取的。
所以如果一幅图像是由很多块颜色相同的大面积区域组成,那么采用游程编码的压缩效率是惊人的。
然而,该算法也导致了一个致命的弱点,如果图像中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。
所以现在单纯采用游程编码的压缩算法用得不多,PCX文件算是其中的一种。
要求
设计一个RLE编码程序实现如下功能:
输入的数字序列为:
44444442222233333111…,采用RLE编码,首先输出(gk,lk)的序列,然后输出相应的普通二进制码。
课题二:
信道编码的实现,包括以下5个小题。
(1)、线性分组码编码
(2)、汉明码编码、译码(纠正一位错误)
(3)、循环码编码
(4)、CRC循环冗余码检错、译码
(5)、卷积码编码
一个示例:
内容:
(1)、线性分组码编码
已知:
(6,3)码H=
110100
011010
101001
(5,2)码H=
10100
11010
01001
(10,4)线性分组码的生成矩阵为
要求:
1)不使用Matlab内部自带的编码函数。
2)在Matlab命令窗口通过输入指定参数选择需要的编码,
(提示:
如:
disp('请选择编码参数:
(5,2)码输入N=1;(6,3)码输入N=2;(10,4)码输入N=3');)
3)编程实现:
由(5,2)码和(7,4)码的监督矩阵H求各自生成矩阵G;由给出的(10,4)码非系统码生成矩阵,通过对矩阵的各行进行线性变换求相应的系统码生成矩阵;(提示:
可以用switch语句进行选择,然后在case语句中完成矩阵的相关操作)
4)显示出选中编码的所有合法码字;
5)求出编码的最小汉明距离。
(提示:
可以对所有码字组成的矩阵按行求和,因为码元非0即1,求和即二进制加也就是异或,其结果就是码字距离,再求最小值即最小汉明距。
)
6)对在命令窗口由键盘输入的任意信息序列进行编码,并给出编码码字。
(提示:
如:
k=input('请输入编码信息位k='),然后利用矩阵相乘K*G求码字。
)
(2)、汉明码编码、译码(纠正一位错误)
对于所有的(n,k)汉明码满足
,因为汉明码只能纠正一位错误。
所以,对所有的接收码字R可知其对应的伴随子向量S=R·HT=(C
E)·HT=C·HT
E·HT=E·HT都是矩阵HT的其中一行。
如:
已知二元(7,4)汉明码的生成矩阵为:
相应的校验矩阵为:
观察到该校验矩阵的列由(101),(111),(110),(011),(100),(010),(001)构成,伴随子向量若非零,则一定是这7个长为3的非零二元向量中的一个。
若码字传输中右边第一位出错,则相应的伴随式
就是
矩阵的第七列,可用十进制数字1=(001)2。
同理可知,无论哪一位出错,它对应的伴随式都可以用其对应的十进制数字表示,这里分别是5,7,6,3,4,2,1。
因此校验时可以此作为开关语句选择的数值,再对出错位进行纠错。
已知:
要求:
1)不使用Matlab内部自带的encode、decode编码函数。
2)在Matlab命令窗口通过输入指定信息位数k选择需要的编码,
(提示:
如:
k=input('请输入编码信息位k='))
3)编程实现:
由1)中得到的k,根据
计算n,并由前述(15,11)码和(7,4)码的生成矩阵G求各自的一致监督矩阵H;(提示:
可以用switch语句进行选择,然后在case语句中完成矩阵的相关操作)
4)对在命令窗口由键盘输入的任意信息序列进行编码,并给出编码码字。
5)对任意输入的(7,4)码的码字(n=7的有错或无错的码字)进行纠错,没有错的显示“无错”;错一位的显示“错在第i位”(i是检错后得到误码的错误位置);错两位以上的显示“超出纠错能力范围”。
(提示:
根据前面原理部分的介绍进行,求出伴随子s后,根据其数值同样可用switch语句进行纠错并给出码字出错的情况。
)
(3)、循环码编码
要求:
1)不使用Matlab内部自带的encode、decode编码函数。
2)可选择(7,3)码、(15,4)码、(15,11)码、(31,26)码等其中任一种循环码,用Matlab求xn+1的所有因子,构造所选循环码的所有可能的生成多项式;以多项式形式显示出来。
(提示:
cyclpoly函数可以求出多项式,但是以向量形式只给出各项系数。
poly2str和str2poly函数可以实现多项式和字符串之间的转换,sym2poly和poly2sym可以实现多项式系数向量与多项式之间的转换)
3)编程实现:
选择前面结果中一个作为循环码的生成多项式,对Matlab命令窗口输入的信息位(提示:
如:
k=input('请输入编码信息位k='))用多项式方法(不要用矩阵相乘的方法)求出所有的许用码字;(提示:
(q,r)=deconv(p,k),deconv进行多项式相除,q为系数,r为余数。
注意:
求解余数时是按照一般的算术运算计算的,这里实际要求为模2运算,因此需要对余式系数进行转化,为偶数的系数化为0,为奇数的系数化为1。
)
4)求出该编码码字之间的最小汉明距离。
(提示:
可以对所有码字组成的矩阵按行求和,因为码元非0即1,求和即二进制加也就是异或,其结果就是码字距离,再求最小值即最小汉明距。
)
(4)、CRC循环冗余码检错、译码
CRC(CyclicRedundancyCheck)循环冗余校验码是常用的校验码,属于截短循环码的应用。
发送方先为数据块生成CRC校验码,使这个CRC校验码的多项式能被生成多项式除尽,实际发送此CRC校验码;接收方用收到的CRC校验码除以
,如果能除尽,表明传输正确,否则,表示有传输错误,请求重发。
本题要求不仅能对接收码字检查错误,而且可以对错1位的情况进行纠错。
检错、纠错原理:
1.由接收到的码
计算伴随式多项式
,就是用接收到的码多项式
除以生成多项式
所得到的余式。
余式为0,码字无错。
余式不为0,存在错误码元。
2.由
确定错误图样
。
3.将错误图样
与接收码多项式
相加,即可纠正错误恢复原发送码字。
要求:
1)不使用Matlab内部自带的decode编码函数。
2)利用循环码CRC-4
=x4++x+1对存在一位错误的(7,3)码字进行检错、纠错。
注:
关于如何确定编码码字是一位错误的方法:
参考Matlab内部的encode函数,使用encode(msg,n,k,'cyclic/binary')函数产生正确的码字,再加上有1位为1的n维向量即得到错一位的码字。
3)先计算伴随子,然后根据伴随子多项式找到对应的错误格式,纠错后显示出正确的码字。
提示:
纠错法参考教材循环码的查表法进行,查表法可以对计算得到的伴随子用switch语句进行选择,然后在case语句中完成纠错的操作
参考:
(5)、卷积码编码
由此图可知,(2,1,2)卷积码电路中含有一个输入端,两个输出端和2个移位寄存器,即每段1比特输入,产生一段2比特输出。
输出方程为:
编码原理:
用循环语句实现。
根据输出方程,对待编码消息序列msg逐位处理,同时寄存器状态随输入改变。
提示:
可以用length(msg)获取待图(2,1,2)卷积码结构图
编码序列长度,用此值控制循环次数。
要求:
1)不使用Matlab内部自带的convenc,poly2trellis,istrellis,distspec等编码函数。
2)待编码序列可以用Matlab函数随机产生,也可以用input从键盘输入。
3)课程设计报告中应有状态转移图。
参考:
课题三:
信息论中的理论知识实现,包括以下5个小题。
(1)、二元信源、BSC信道信息熵的计算
(2)、Kraft不等式的实现
(3)、信道容量的计算
(4)、纠错位数不等式的实现
(5)、信道编码在通信系统中的应用
内容:
(1)、二元信源、BSC信道信息熵的计算
要求:
1)根据输入的信源概率和信道概率矩阵计算各种熵以及平均互信息。
2)注意各概率向量的计算应该用.*或./
3)绘制二进制信源熵的图形(提示:
plot画图)
4)计算的结果保存在data.txt文件中。
(提示:
fopen、fprintf、fclose对文件进行打开、写入、关闭的操作)
(2)、Kraft不等式的实现
要求:
1)Kraft不等式的实现:
根据输入的信源编码符号集合,读取码字长度(提示:
length函数可获取向量长度),用Kraft不等式进行判断,并显示判断结果,即该编码是否可能是唯一可译码。
2)编码的平均码长的实现:
给定信源概率分布以及编码的码字结果,按概率与码字的对应关系,计算编码的平均码长和编码效率。
(提示:
本题分析的信源概率分布与编码码字可用教材例题或作业上的结果。
)
(3)、信道容量的计算
要求:
1)编程实现是否是对称信道的判断,给出判断结果。
(提示:
对称信道概率矩阵的每一行和每一列都是相同元素的重排。
判断方法:
例如,可以对传输概率矩阵的每一行元素和每一列元素都分别用sort函数进行排序,并判断是否相等,例如用isequal函数。
行、列元素都符合重排的条件,输出判断结果。
)
2)如果是对称信道,计算信道容量,并给出匹配信源的概率分布。
(4)、纠错位数不等式的实现
原理:
码长为n的码字,发生一位错码的方式有
种,同时发生二位错的方式有
种,同时发生t位错的方式有
种。
为了能用伴随子S区分t位以内的所有错误格式,应当有:
2r–1≥Cn1+Cn2+……+Cnt
或:
2r≥Cn0+Cn1+Cn2+……+Cnt
这就是信道编码的纠错位数不等式。
要求:
1)在Matlab命令窗口输入指定信息位数k和码长n,
(提示:
如:
k=input('请输入编码信息位k='))
2)编程实现对输入的n和k值计算该信道编码的纠错位数t。
(5)、信道编码在通信系统中的应用
原理:
Matlab中的Simulink包含了通信工具箱仿真模块(CommunicationsBlockset),其中包括常用的差错控制编码模块有线性码、循环码、汉明码、里德—索洛蒙编码(RS码)、BCH码、卷积码。
利用他们配上简单的调制搭建成通信系统,显示仿真结果,通过实验以及结果分析,可以得到每种差错控制手段对传输特性的影响。
图信道编码模块库
要求:
搭建一个完整的通信仿真模块,并给出运行结果,任选上面信道编码模块中的两种,分析信道编码对通信性能的影响。
系统由信号产生模块、信道编码模块、AWGN信道、信道译码模块、误码率计算模块组成,在图形观察模块还包括频谱仪和示波器。
在设计中,选用伯努利二进制序列产生器(BernoulliBinaryGenerator)来输出随机数字信号,进入Hammingencoder进行编码,在送入AWGN信道(加入高斯白噪声)传输,接收信号送入Hammingdecoder进行差错纠正,其后加一误码率计算模块(ErrorRateCalculation)计算误码率,并通过显示器(Display)显示出错误率。
图BCH码的仿真框图
图汉明码的仿真框图
另外还有:
图线性分组码的产生模块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 处理 课程设计 要求
![提示](https://static.bdocx.com/images/bang_tan.gif)