编码——卷积码Matlab编译码实现与性能分析
With Breeze 2024-06-13 13:05:03 阅读 89
目录
第一篇博客感言
卷积码编译码原理
Matlab源码和运行结果
源码
结果
第一部分
第二部分
第三部分
待探究的问题
第一篇博客感言
“种一棵树最好的时间是十年前,其次是现在。”
从大二下进入通信专业起,就计划着要记录下这个领域的学习历程,并且随着做过的作业、课设、竞赛、项目等越来越多,想要把成果写下来的心情就越发强烈。原因有三:
一是保存,毕竟放我电脑上哪天没内存了就可能把那些资料删掉了很可惜;
二是开源,大二时和同学聊天,他说“通信领域开源很糟糕,大家各干各的”,于是不禁想起做项目时搜一个PM解调找不到一个可供参考的例子,那一刻起就想着至少把我的东西开源出去,并且有机会的话也会邀请同行业的人与我一起开源,为通信人提供微小的帮助;
三是敬畏,这也是最关键的因素吧,大三前很贪玩,觉得玩游戏能玩一天,学习学不进去一点,后来又实在觉得玩游戏没什么意思,还是技术有吸引力,想一门心思把技术做好,敬畏它就想把它画下来,裱起来,瞻仰瞻仰。
现在已经大三下了,虽然说从有记录的想法起到现在已经一年了,但也算是时机终于成熟了吧。最近想透了一些东西,决定深耕于通信领域;积累的东西也有一些了,是骡子是马可以拿出来溜溜了。
第一篇博客就先写最近刚做的编码课的课程设计,后面再慢慢更新之前的学习内容,没有特殊情况争取一周更一篇吧。
与诸君共勉。
卷积码编译码原理
原理部分网络上都能查到,此处不再赘述,这里放一点我参考的资料。
Matlab源码和运行结果
源码
作为学生党,超高的会员费让我一直备受百度网盘限速苦恼,所以我的资源都会上传到蓝奏云,希望蓝奏云不要因为没收益倒闭了......
https://wwb.lanzouv.com/inDLy20nwdxe
密码稍后公布
结果
代码实现总共分为三个部分:
第一部分
detailed_conv是归零卷积码具体的编译码实现,但是只能编写形式为(n,1,N)的卷积码。这部分代码几乎全部来自于虎慕的文章,感谢大佬开源,有兴趣的朋友可以查看下面这篇博客。《实验七-卷积编码的MATLAB实现》
https://blog.csdn.net/weixin_46258766/article/details/119060965?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171712790016800186513830%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171712790016800186513830&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-119060965-null-null.142%5Ev100%5Epc_search_result_base5&utm_term=213%E5%8D%B7%E7%A7%AF%E7%A0%81%E5%AE%9E%E7%8E%B0matlab&spm=1018.2226.3001.4187
运行main函数结果如下:
第二部分
dif_channel是通过三种不同信道的不归零卷积码软判决、硬判决、理论、仿真性能比较,这部分使用的是Matlab的自带函数,可以任意调整各种形式卷积码。至于为什么最终都要经过AWGN信道,这是因为瑞利衰落和莱斯衰落都是一种多径的衰弱,并未考虑到噪声影响,而实际上噪声在任何信道中都会出现。
只经过AWGN信道的结果如下,可以看到软判决解码性能远好于硬判决性能。
经过瑞利衰落和AWGN信道(适用于传统无线信道)的结果如下。
经过莱斯衰落和AWGN信道(适用于卫星信道)的结果如下。
第三部分
diff_η是不同码率k/n的不归零卷积码通过同一AWGN信道的性能比较,可以看到码率越低性能是越好的,不过这意味着系统的开销也是更大的,这是很常见的要资源还是要准确率的问题。
待探究的问题
1、Matlab自带的函数convenc是不归零卷积码,也就是说不等待数据全部移出寄存器即停止编码。这与归零卷积码对比,在更复杂的编码时是否会有更低的性能,这有待考究;
2、自编函数实现k≠1,也就是每次输入比特大于1的卷积码实现;
3、莱斯衰落信道仿真结果的正确性存疑,尤其是理论误码率曲线。
欢迎交流讨论。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。