小工具知识网

当前位置: 首页 > 行业知识 > 编码——卷积码Matlab编译码实现与性能分析

行业知识

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

2026-11-06 09:36:52 来源:互联网转载

目录

第一篇博客感言

卷积码编译码原理

Matlab源码和运行结果

源码

结果

第一部分

第二部分

第三部分

待探究的问题


第一篇博客感言

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

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

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

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

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

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

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

与诸君共勉。


卷积码编译码原理

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


Matlab源码和运行结果

源码

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

https://wwb.lanzouv.com/inDLy20nwdxe

密码稍后公布

结果

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

第一部分

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

运行main函数结果如下:

第二部分

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

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

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

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

第三部分

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


待探究的问题

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

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

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


欢迎交流讨论。

上一篇:96. 不同的二叉搜索树

下一篇:路由dns怎么填服务器?