电子类的学科包括计算机软件通信电子等等等,最核心的是啥,抽象与复杂度。每个课程的内容里面的核心思路都是去 消解掉一些复杂度,为上层提供一个简单的模型抽象。通信工程里面会有很多个层次,每个层次逐层消解复杂度逐层抽象之后,到了最上层就能够以一种很简单的方式来利用这些设施,这就是你为什么能够以一种这么简单的姿势来操作手机和电脑的原因了,这是因为大量的工程师做了大量的工作来屏蔽底层的复杂度,让你误以为这个世界很简单,而这些工作内容的基础原理就都写在你大学的课本里面了。
好吧,举个例子吧。比如大二的信号与系统,大家都被傅里叶变换啥的迷乱眼了,其实那些都不是正主,最核心的概念其实是“线性时不变系统”,这就是一种抽象,叫做线性时不变抽象,它就像一个黑盒子一样,把系统里面的细节都屏蔽掉了,直接抽象出来一个卷积模型(你注意看卷积的推导过程,是基于线性时不变进行推导的),是不是感觉好像很简单的样子。
实际上呢,实际的系统很复杂,比如移动通信系统的射频通信部分要经过射频调制,经过功放,经过天馈系统,发射出去经过空间传播环境,再经过手机接收天线接收等等一系列环节,每个环节在通信工程里面都能有对应一门课来讲,比如射频调制要有通信原理还有通信电子电路(高频电子电路)来讲,功放要有通信电子电路(高频电子电路)来讲,天馈系统要有微波技术基础(传输线理论)来讲,发射出去在空间传播要有两门课来讲,分别是电磁场理论和无线传播环境。再往上的信号调制解调还要有通信原理和数字信号处理来讲。
信号与系统做了一个什么事情呢?它才不管你这么多呢,直接简单粗暴,用个黑盒子把这些过程都罩起来,里面的东西什么射频调制啊功放啊空间传播啊各种复杂的东西,我看不见看不见看不见我就是看不见。。。。他们把这个黑盒子就叫做“线性时不变系统”,然后我给上层信号处理(通信原理与数字信号处理)提供了一个卷积模型。是吧,这就是一个抽象的过程,屏蔽了底层的复杂度。当然底层的复杂度不是说你假装看不见,它就不存在的,如果没人去处理掉它,它就会穿透抽象的屏蔽,传导到上层去。所以通信工程还开设了很多课程,教你如何去把底层捏成一个线性时不变的系统,比如功放要保持线性吧,天馈系统也要保持线性吧,空间传播怎么保持线性时不变呢,把时间粒度切得足够细,把频率粒度切得足够细,注入导频/参考信号。这样就可以制造出一个近似的线性时不变系统了,只有这样卷积模型才会成立,然后通信原理上层的各种信号模型理论才会成立,就是这样子的,一层一层往上抽象。
其中比如无线信号传播的复杂性,电磁波在空间里面传播会经过无数次的反射折射绕射散射透射,即使用这个世界上最快最牛逼的超级计算机,都算不清楚最终手机接收到的无线信号会是什么样的,既然这么复杂,那我们凭什么能用无线电来做通信系统呢?只能去抓主要矛盾,我们能把无线电系统从时频域上 近似切分成线性时不变系统,一个带有误差概率的线性时不变系统。关于这一点也是可以很好理解的,比如我们日常收听的无线模拟广播,从发射塔发射出来,经过了那么大范围的复杂传播,我们收听的广播仍有那么高的还原度,说明什么?说明我们接受到的无线电波形整体上仍是和发射的信号相似的,也就是传播过程中基本保持了线性,所以我们有理由相信主要矛盾是线性的。
当然除了主要矛盾,实际当中也还有各种复杂的次要矛盾,比如非常复杂的衰落,各种非线性的效应扭曲了信号本身,这些都是需要进行预先处理和纠正的,实在处理不了的就只能当做干扰和噪声来处置了。如果在这个处置过程中造成信号判决错误的话,就会把这个问题往上一个层次抛去,抛到信道编码层去进行信道编码检错纠错和重传处理。这里其实就体现了抽象与复杂度的关系,底层尽自己最大努力去处理和解决复杂度,实在解决不了的复杂度,就会往上层抛去,由上层接住继续处理。如果在到底客户之前都没能把问题兜住的话,就等着客户吐槽和退货吧~~~
只有理解了复杂度所在,抽象才会有意义。脱离实际应用场景谈数学确实挺无趣的,所以国内的教育大部分都是被阉割的,不完整和不成体系的。不谈复杂度过程而光去谈抽象的结果是一个没有意义的事情,抽象的基础是基于复杂度的解决,抽离这个基石谈抽象注定会变成空中楼阁。复杂度不解决,或者解决得不彻底,就会穿透抽象屏蔽向上传递。信号与系统这门课本来应该可以讲得非常精彩,包括它怎么来的,然后又怎么应用的,结果现在很多时候沦为了一门数学课,本末倒置。
亲,玩手机玩电脑是不是很爽啊,什么东西都是一点就开,但是造手机造电脑的过程一点都不爽,得要学这么多这么这么无聊又复杂又困难的课程。从小到大很多人是一直被保护得很好,不知道这个世界的艰辛,然而今天该轮到你们这些国家的栋梁作为一个苦逼的工程师来填坑了,快快努力学习掌握填坑的本领吧,长大要为人民立功劳。
——————————————————————————————–
得空路过讲几句,上面提到的分层并不是必须的,一定要记得,分层的根本目的是为了分解和控制复杂度,然后各个击破,具体怎么分是根据实际需要来分的,而且不同的实现采用的分层设计也会是不一样的。甚至有的实现在设计思路中是分层的,但是实现起来又是不分层的,这也是可能的,这个要看实现者对复杂度的掌控能力,以及成本问题。
很有意思的是,在经典的通信协议栈里面,特别是移动通信系统,通信工程学了四年的绝大部分内容原理都被归在了协议栈里面的物理层上面,少量涉及MAC层,也就是大家学了四年只学了一个层次而已,即使只是这一个层次已经让大家觉得很难了,我认为物理层应该协议栈是最重要的底座。 所以对于物理层这么难的一个层次,其实里面还是可以继续划分层次的。比如在我的脑海里面对于无线通信就有一个比较简陋的分层,物理载体层,模拟信号层,数字化载体层,信道编码层。大概就跟修路的思路类似,首先要开凿出一条通道,然后要找平和铺设沥青混凝土平整路面,接着要划分车道,再往上还要设置交通灯还有各种交通标识引导赋予交通规则等等。
值得一提的是,上面只讲了“信号与系统”的“系统”抽象,也就是线性时不变系统抽象。我们还没讲“信号”,信号本身就是一种抽象,既然是抽象,那它是必须要有具体的物理载体来承载的,包括无线通信里面的电磁波,电子电路里面的电场,光纤里面的光波,这些都是物理载体,信号映射调制在物理载体的某个参量上面,比如场强等。当然更广义的信号还可以是从什么股票价格、气温啊这些物理参数上面抽象出来。所以我们为什么要学习硬件,是为了要构造一个模拟信号的稳定物理载体。
模拟信号抽象出来之后,再往上我们要像捏橡皮泥一样,把模拟信号捏成一个个规则的格子,或者说一个个规整的盒子,每个格子/盒子用来盛放一个或几个数字比特,这个过程又可以叫做数字化抽象,意思是在基于模拟信号的基础上进一步抽象和结构化,赋予它数字化结构,从而可以用来作为承载数字信息比特流的容器,而把数字比特“装到”这个数字化容器的过程就叫做数字调制。
——————————————————————————————–
多讲几句,上面提到的卷积,很多童鞋被数学形式还有计算过程迷乱了眼,很多解释都在围绕它的具体计算过程什么翻转滑动啊这些本末倒置的东西展开,而丢失了对信号处理本质的理解,信号与系统里面提到的卷积是基于线性时不变进行推导的,所以理解信号处理里面的卷积必须紧扣线性时不变,卷积这个数学形式反映的就是线性时不变。
记得“卷积”是有两个字的,包括一个“卷”字和一个“积”字,很多童鞋都只记得了“卷”,其实“积”应该才是排在前面的和最基础最重要的,”积”是对线性的描述,我们在上面讲过无线信号的接收波形整体上和发射出来的波形近似相似,只是幅度变弱了,既然相似就可以用线性来建模,信号幅度大小的衰减,相当于乘以一个衰减因子。
很有意思的是,卷积定理干脆通过转换“坐标系”到频域上面,直接把“卷”干掉了,只剩“积”了。。。。
“卷”是对时不变情况下的扩散现象的描述,比如多径传播这种扩散现象。卷积本身是基于线性时不变进行推导的,当然也可以从时间维度引申引用到其它维度上面,比如空间维度。
卷积应用于无线通信信道一般主要描述了三个重要的信号扭曲效应:衰减、时延、时间色散(多径传播导致的码间干扰)。其中衰减和时延在线性时不变信道中只用“积”就可以描述了,而叠加了 时间色散 之后就必须加上“卷”才能描述。 这些扭曲效应反映在星座图上面就是,衰减让整个星座图往中心收缩,而时延让整个星座图旋转,而时间色散形成的干扰和噪声一起,让星座点偏移原来的位置进而形成一片星座点云。
再来考虑信号抽样离散下的数学形态,如果只有“积”没有“卷”的话,数学表达形式那就是一个简单的线性方程或线性函数,因为只用考虑当前时刻,不用考虑其它时刻的干扰;而如果又有“卷”又有“积”的话,数学表达形式就是一个线性方程组,那是因为每个时刻接收到的信号,不单要考虑当前时刻的信号,还要叠加其它时刻信号的拖尾干扰,所以变成了一个线性方程组。线性方程组在线性代数上又可以用矩阵形式来表达。
———————————————————————————————
搬运评论区内容。
通信工程其实是有两个方向维度的,一个是纵向的就是我在这个回答里面提到的垂直化层次,另外一个就是横向水平化,主要就是构造一个通路,主要概念就是以信道/链路/连接这些概念为主。水平方向的节点会非常多,每个节点几乎都能独立开一门课,有些节点甚至还不会在本科开课或者仅是在通信原理里面大概讲一下,会导致大家拼不全整个全貌。通信工程比较复杂的地方就是纵横交错,如果理不清楚的话就会容易兜兜转转出不来。所以搬砖专业相对通信就简单了,主干基本就只有垂直的层次,只要站在其中一个抽象的层次上就可以开动了。
讲到横向水平维度,得空又啰嗦几句。有意思的是,我们上面提到信号与系统把物理信道封进了黑箱子里面,当然不是说封进黑箱子就完了,总会有一些接口或参数模型暴露出来,这个暴露出来的模型就是经常提的传输函数或者说离散下的信道矩阵。那问题来了,我们课本上包括考试题目的这些个传输函数或信道矩阵是怎么来的?没错了,就是天上掉下来的,教材课本直接甩你脸上的。。。。。
在解答这个问题之前,我们先来看一下,对于通信工程这个专业而言,信号与系统有一个非常重要的事情经常性地被忽略了。记得通信本身最朴素和最根本的目的是啥? 就是我们要从接收到的信号,去尝试努力把对方发送的原始信号还原出来,这个才是我们通信的最根本的目的。是吧,作为普通客户,你们这些通信汪不要跟我扯别的,我上个网只想对方给我转1000RMB,你不要给我变成1000日元了。。。啥?傅里叶变换?滚,那是你们通信工程搬砖汪骗人的玩意。。。。。
回到正题,那该怎么还原呢?结合上面讲的“卷积”,在抽样离散的情况下导出了线性方程组,这个问题就变成了简单的 列方程组求解未知数。是不是很简单呀,信号还原问题变成了中学时候解方程组的内容,是的,你没有看错,就是这么简单。。。。。
但是,工程上的事情确实又没有这么简单。因为在求解方程组之前还有两个非常重要的事情还没解决! 第一个事情,我们知道我们是用发送信号s 去卷积 信道函数H 得出接收信号r,这个方程组里面除了接收信号 r已知之外,s和H都是未知的,也就是同时有两个未知数,这是解不出来方程组的。所以我们还必须知道H才能解出s来。而在信号与系统的教材里面H通常都是给现成的,教材直接给定了一个具体的形式甩你脸上,让大家去努力练习卷积计算,但却没有告诉大家这个H是怎么来的。 在实际的无线通信系统里面,H是依靠“信道估计”得出来的,大家可以去看一下信道估计的内容。简单来说就是通信的双方提前约定好一个固定的已知信号(参考信号/导频),每次通信的时候,提前或者同时发送这个已知信号,那接收方收到这个已知信号之后,就能估计出H来。
那第二个重要的事情是什么呢? 事实上我们虽然说是线性方程组,但又和我们中学时候理解的严格的线性方程组又有点不太一样,因为首先提到了这个H不是精准的,是“估计”出来的,也就是近似的,所以注定我们求解出来的信号也是近似的。另外我们还要在这个方程组的左边加上噪声项,而这个噪声项又是不确定的,随机的,所以我们只能采用最优化理论的办法来求解。求解的过程通常就是我们通常讲的“信道均衡”,均衡这个单词的原始含义是“使相等”,也就是使得均衡之后的信号尽量等于原始发送的信号。当然不可能绝对相等,只能说是在某种准则下的最优化结果,给出一个相对近似的结果。
事实上还有一个重要的事情,一般来说,这个线性方程组的系数矩阵或者说信道矩阵基本不会是刚好满秩的,可能秩会大于未知数个数,或者小于未知数个数,对应的分别是超定方程组和不定方程组,那么按线性代数的理论,这样的矩阵是不可逆的,换句话说这类方程组要不就是没有解,要不就是有很多解。为了解决这一类问题,在矩阵论里面创造了“伪逆”的解法来求一个近似解,在最优化理论里面有对应的正则化的解法,而最最最简单的就是常见的最小二乘法了。这里对应了信号处理领域的一门课程《信号估计与检测理论》,一般都不会在本科阶段开课,通信原理提到的ML和MAP准则就是其中的一点内容,这个是最优化理论在信号处理领域的应用,你也可以认为是人工智能在通信里面的应用。。。。
我这一段啰啰嗦嗦讲了这么多,讲的是啥呀,其实只是跟大家复习了一下怎么求解线性方程组。。。。
———————————————————————————————
评论区有童鞋提到现在很多人从EE转CS了,那就多讲几句吧。CS其实也是抽象和分层满天飞的学科,从物理学开始逐层往上抽象,到模电,到数电,到CPU/指令集,到汇编语言,到高级语言,到系统级软件(操作系统、数据库系统),到应用级软件,也是分层次抽象的。而每个大的层次里面还可以再分小的层次,都是逐层抽象,逐层虚拟出各种基础模块和功能,比如系统级软件里面的操作系统就抽象虚拟出来进程、文件等关键对象。而计算理论本身也是分层次的,从4型文法一直到0型文法。软件工程拿着抽象当饭碗的,没有抽象就活不下去那一种,里面各种分层设计。面向对象的编程语言一开头就讲类和对象的抽象。
另外CS并不是和电子信息、通信相独立的,其实CS也是通信工程的一部分内容,数字信号处理的硬件其实就是一种专用的计算机,数字信号处理本来就是CS的数值算法的范畴,fft / ifft其实只是一种计算机算法,只不过它可以应用于傅里叶变换的数值计算而已,当然它也可以应用于别的问题的数值解法比如多项式乘法,不具备CS基础知识的人也是很难学好学懂通信工程的。
很多转CS的童鞋,很多知识都没学懂,电子信息没学懂,通信没学懂,CS其实也没学懂,但并不妨碍他们搬砖搬得嗷嗷的,反正现代的编程语言,各种类库,各种框架和系统,已经抽象和封装得很好了,直接调用就行了,至于里面发生了什么事情,搬砖工不知道也不影响他搬砖~~
