编码——卷积码Matlab编译码实现与性能分析

With Breeze 2024-06-13 13:05:03 阅读 89

目录

第一篇博客感言

卷积码编译码原理

Matlab源码和运行结果

源码

结果

第一部分

第二部分

第三部分

待探究的问题


第一篇博客感言

“种一棵树最好的时间是十年前,其次是现在。”

从大二下进入通信专业起,就计划着要记录下这个领域的学习历程,并且随着做过的作业、课设、竞赛、项目等越来越多,想要把成果写下来的心情就越发强烈。原因有三:

一是保存,毕竟放我电脑上哪天没内存了就可能把那些资料删掉了很可惜;

二是开源,大二时和同学聊天,他说“通信领域开源很糟糕,大家各干各的”,于是不禁想起做项目时搜一个PM解调找不到一个可供参考的例子,那一刻起就想着至少把我的东西开源出去,并且有机会的话也会邀请同行业的人与我一起开源,为通信人提供微小的帮助;

三是敬畏,这也是最关键的因素吧,大三前很贪玩,觉得玩游戏能玩一天,学习学不进去一点,后来又实在觉得玩游戏没什么意思,还是技术有吸引力,想一门心思把技术做好,敬畏它就想把它画下来,裱起来,瞻仰瞻仰。

现在已经大三下了,虽然说从有记录的想法起到现在已经一年了,但也算是时机终于成熟了吧。最近想透了一些东西,决定深耕于通信领域;积累的东西也有一些了,是骡子是马可以拿出来溜溜了。

第一篇博客就先写最近刚做的编码课的课程设计,后面再慢慢更新之前的学习内容,没有特殊情况争取一周更一篇吧。

与诸君共勉。


卷积码编译码原理

原理部分网络上都能查到,此处不再赘述,这里放一点我参考的资料。

e13cc93bf97d4358a53f90d9e2a7339b.png

017d9ca8534b46fc92dc24b792ef2a10.png

e502d69e4c764bcc9cabb9e9151ffda0.png

bb85317dff524c6bab05108bcc655266.png


Matlab源码和运行结果

源码

作为学生党,超高的会员费让我一直备受百度网盘限速苦恼,所以我的资源都会上传到蓝奏云,希望蓝奏云不要因为没收益倒闭了......

https://wwb.lanzouv.com/inDLy20nwdxe

密码稍后公布

结果

代码实现总共分为三个部分:

第一部分

detailed_conv归零卷积码具体的编译码实现,但是只能编写形式为(n,1,N)的卷积码。这部分代码几乎全部来自于虎慕的文章,感谢大佬开源,有兴趣的朋友可以查看下面这篇博客。《实验七-卷积编码的MATLAB实现》

icon-default.png?t=N7T8

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函数结果如下:

af3751847f2e4f3eb663127baa38180e.png

第二部分

dif_channel是通过三种不同信道的不归零卷积码软判决、硬判决、理论、仿真性能比较,这部分使用的是Matlab的自带函数,可以任意调整各种形式卷积码。至于为什么最终都要经过AWGN信道,这是因为瑞利衰落和莱斯衰落都是一种多径的衰弱,并未考虑到噪声影响,而实际上噪声在任何信道中都会出现。

只经过AWGN信道的结果如下,可以看到软判决解码性能远好于硬判决性能。

经过瑞利衰落和AWGN信道(适用于传统无线信道)的结果如下。

经过莱斯衰落和AWGN信道(适用于卫星信道)的结果如下。

第三部分

diff_η是不同码率k/n的不归零卷积码通过同一AWGN信道的性能比较,可以看到码率越低性能是越好的,不过这意味着系统的开销也是更大的,这是很常见的要资源还是要准确率的问题。


待探究的问题

1、Matlab自带的函数convenc是不归零卷积码,也就是说不等待数据全部移出寄存器即停止编码。这与归零卷积码对比,在更复杂的编码时是否会有更低的性能,这有待考究;

2、自编函数实现k≠1,也就是每次输入比特大于1的卷积码实现;

3、莱斯衰落信道仿真结果的正确性存疑,尤其是理论误码率曲线。


欢迎交流讨论。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。