成为通信算法工程师需要掌握哪些,时间需要多久?

成为通信算法工程师需要掌握哪些,时间需要多久?

作为工作了15年的通信算法工程师,我来回答一下这个问题。

通信算法工程师主要分为两种:物理层算法工程师和高层算法。

物理层算法主要研究信号处理,高层算法主要研究调度、功控、组网等问题。物理层算法更加通用,工作选择更多,高层算法更专一些,工作选择机会略少。

本篇主要讲述怎样成为通信物理层算法工程师和卫星导航算法工程师。

要成为一名物理层算法工程师,必须要有良好的数学基础,要掌握以下几门重要的数学课:

1)概率论与数理统计;

2)矩阵论;

3)随机过程;

4)复变函数;

5)近世代数(信道编码方向必会,其它方向不必会)。

除了数学基础,还要有通信理论基础,以下几门专业基础课,不可或缺。

1)信号与系统;

2)数字信号处理;

3)信息论;

4)通信原理;

当然,还必须掌握仿真工具matlab和C语言,有的公司会使用matlab与C混合编程,虽然这样的公司不是很多。

有了以上的基础,可以做一些基础的通信仿真。下面就可以选择一个方向,进行有针对性的学习了。

如果你想做LTE或者5G NR方向,必须学习以下内容:

1)扩频通信原理;

2)OFDM原理;

3)MIMO;

4)信道建模;

5)通信协议,至少要看211~215(LTE协议为36系列,NR协议为38系列);

6)信道估计理论;

7)信号检测理论;

学了以上这些知识之后不是没有其它东西可学了,而是其它东西只能在干中学。定点化设计,专利撰写,标准跟踪,设计报告撰写与评审,外场测试支持等一大堆的事等着你呢。

现在开始选择一个信道作为重点,如PUSCH或PDSCH,开始你的通信算法之旅。

等等!如果你想有比较好的学习效果,就需要一个通信仿真平台,就是别人都写好的那种,你拿来配上参数就能跑仿真,你可以在平台上编写你自己的算法,如果没有仿真平台,自己从零开始搭建平台,几乎是一个不可能完成的任务。

通常大学和设备商都有仿真平台,都是耗费很多人力和时间搭建起来的,尤其是设备商的仿真平台,不会轻易给人。

至于大学的仿真平台,前几年见过维也纳大学的仿真平台,虽然跑性能可能不太靠谱,但是用来学习还是可以的。

最后要说的是,算法工程师要对你的仿真结果负责,不同仿真条件下的仿真结果差异,都要给出合理的解释。

“4用户8流与8用户8流比哪个性能更好,为什么?”

“4用户8流更好?可在实际的测试中分明是8用户8流更好,你给个解释!”

“测试发生了很多难以理解的现象,让算法给个解释/问问算法问题出在哪了?”

“一个合理的解释”足以让算法工程师抓破头皮,但这就是算法工程师的工作。

要学的东西很多,而且难度也比较大,所以通信算法工程师是一个门槛比较高的岗位。通常硕士毕业生要经过三年的培养才能独立进行算法设计。

卫星导航常常是被人忽视的领域,大部分人以为卫星导航系统比较简单,技术含量不高。

其实不然,经过多年的发展,卫星导航系统已经更新换代,GNSS现代化信号已经全面上星,又衍生出了RTK、PPP、卫导和惯导组合导航、抗干扰接收机等一系列重要的方向。

除了横向发展,卫星导航技术的纵向延伸也很显著,大规模相关器技术,开环跟踪,不连续跟踪等一系列的新技术。

所以卫星导航算法完全不是一个人可以轻松搞定的,通常来说一个人只能精通2~3个技术方向。

要成为卫星导航算法工程师最好要掌握一门实现技术,如FPGA或者DSP/ARM,因为在很多公司算法工程师同时要承担算法实现的工作。

卫星导航工程师一般还要熟悉以下基础理论:

1)扩频通信原理;

2)锁相环理论;

3)卡尔曼滤波;

4)GNSS现代化信号体制,主要是BOC调制技术

上述四门功课主要是基带算法工程师必备理论基础,其它方向的算法工程师仅需了解即可。

当然卫星导航也有自己的“协议”,国内一般叫做接口控制文件,一般来说还是应该熟悉这个文件,不过好在比较好懂,比LTE的协议简单很多。

不过要注意的是目前有三大卫星导航系统,每个系统都有好几个信号,每个信号都有自己的接口标准,都熟悉起来,也需要一定的时间,好在各个信号都有一定的相似性,没那么费力。

一般来说,做卫导接收机仿真比较简单,自己动手写链路就可以,其难点不在于算法,而在于动态信号的建模,比如动态信号有加速度,还有加加速度,怎么进行信号建模呢?这个问题略有挑战性,不过如果如果你的数学基础不错,还是可以解决的。

如果做抗干扰方向,则必须熟悉阵列信号处理,对矩阵论的要求比较高。这个方向不利于自学的难题是信号建模,如果信号只考虑了天线阵元之间的相位差,没有考虑天线非理想特性带来的信号畸变,那么无法准确评估抗干扰的性能,因为理想信号抗干扰的性能太好了,解决的方法是采集实际接收信号,或者找到更加合理的信号建模方法。

通常卫导接收机和抗干扰算法是在FPGA平台上实现的,理论基础都是信号处理,比较适合打包学习。

其余方向如PVT解算,PPP和RTK都是在DSP或者ARM平台实现的,一般使用C语言开发,这个方向需要更多的了解卫星星历,导航的味道更重一些,更多使用卡尔曼滤波,最小二乘法等。目前有个开源的rtklib,是学习RTK算法的好帮手。

一般来说,卫星导航算法一年就可以上手,但是想做好却非常不容易,因为系统比较简单,算法的关键点并不多,但是要自己实现算法上的突破还是很难的,每一个创新都是点滴的努力汇集而成的。