第4章:载波同步与锁相环仿真(1)

本人最近搞懂了锁相环MATLAB仿真的一些知识,于是先更新第4章——信号同步。

第4章(1)内容如下

  • 一、二阶锁相环的MATLAB代码实现
  • 二、锁相环经典书籍与材料
  • 三、各参数对二阶数字锁相环的性能影响
  • 四、总结

一、二阶锁相环的MATLAB代码实现

本科在学习通信原理的课程时,提到2PSK的相干解调,接收端需要一个和发送端同频同相的载波,才能进行相干解调。

书本上一般会考虑载波相位误差 φ \varphi φ 对相干解调性能的影响,会使得信噪比下降 cos ⁡ 2 φ {\cos ^2}\varphi cos2φ 倍。(思考几秒钟,想下为什么?)

第4章:载波同步与锁相环仿真(1)_第1张图片

你可能会想了,接收端有没有什么办法能估计出这个误差相位 φ \varphi φ,从而避免这种信噪比的损失呢?

激动人心的时刻,锁相环表示他要出场了。

对,锁相环就是这么一种神奇的电路,能够产生出一个与到达接收端信号同频同相的载波信号。

注意,在这里你需要区分发送信号到达接收端信号,这两者的频率和相位常常是不一样的。

这是为什么呢?

在无线通信,尤其是卫星通信中,是少不了多普勒频偏的。

奇怪的小问号来了,多普勒频偏是什么?

百度解释:多普勒频偏(Doppler Shift)是指当移动台以恒定的速率沿某一方向移动时,由于传播路程差的原因,会造成相位和频率的变化,通常将这种变化称为多普勒频偏。

通信协议中,会事先规定收发端的载波频率,比如发送端的载波频率是fc,若接收端采用相干解调,接收端的本原振荡器也会产生频率fc的载波。

上面我用的“到达接收端信号”这个词语,可能不是特别准确,我想表达的是接收端实际收到的信号,你结合多普勒频偏便可以理解了。

但是多普勒频偏 Δ f \Delta f Δf 到底偏了多少?这个值,接收端是不知道的。

对于接收端来说,接收端认为收到的信号频率是 f c + Δ f {f_c} + \Delta f fc+Δf 。此时若还想采用相干解调,依然需要同频同相的载波,便要把多普勒频偏 Δ f \Delta f Δf估计出来。

那你可能忍不住会问了,接收机就是不纠正多普勒频偏会带来什么后果呢?(这问题我想了也特别久)

后果便是:星座图的旋转,这将对接收端的解调和判决造成非常大的困扰。

思考几秒钟,为什么?

一个复信号,对其乘以 e j Δ θ {e^{j\Delta \theta }} ejΔθ ,对应到星座图上,是对这个星座图进行逆时针旋转 θ \theta θ ,而

Δ θ = 2 p i Δ f t \Delta \theta = 2pi\Delta ft Δθ=2piΔft ,随着时间的积累,星座图旋转的角度会越来越大,判决的时候若不将星座图顺时针旋转回来,判决便容易出错,慢慢体会。

那采用非相干解调,不就行了吗?

无论对于相干解调还是非相干解调都是要估计多普勒频偏的,原因同样是星座图的旋转。当然,这也与非相干解调算法的频偏容忍范围有关。非相干解调的MATLAB实现,我将在第六章解调算法中写。

既然上面已经说到了锁相环,我自己本科时候学习了《高频电子线路》课程,知道了模拟锁相环电路的工作原理,那到底在数字系统是如何实现锁相环的呢?

我在《数字锁相环的MATLAB实现》提供了初始版本的代码,后面我会将其应用于有多普勒频偏的2PSK相干解调

二、锁相环经典书籍与材料

在讲解锁相环MATLAB代码实现之前,我先列举一下我所知道的锁相环经典书籍:

1、Gardner的《锁相环技术》,英文名是《Phaselock Techniques》,锁相环领域世界权威级教科书

2、西电出版社,郑继禹、张厥盛的《锁相技术》

3、郑继禹的《同步理论与技术》

以上三本书我都没完整看过,但遇到问题时,常翻阅。接下来说说我看过的材料:

1、《Fundamentals of Global Positioning System Receivers》的第8章,中文版本的西电杨俊、武奇生《GPS基本原理及其仿真》第6章与前者内容将近一致。

2、CSDN上《二阶数字锁相环仿真(内附MATLAB代码)》,也是一份非常不错的材料。

3、杜勇的《锁相环技术原理及FPGA实现》,这书的写作形式是博客,娓娓道来,总是能把我心中想问的问号说出来,非常不错。

4、蔡凡博士的博士毕业论文《卫星定时接收机的关键技术研究》,知网上可以下载,关于捕获和跟踪的内容比较全,需慢慢消化。

以上材料中对锁相环的原理讲解不错,均缺少MATLAB代码实现。

我现在想通信问题,会常想怎么在代码中实现。结合蔡凡博士的微信公众号“通信工程师专辑”有MATLAB代码,我将思考明白的原理和代码讲解如下。

《Fundamentals of Global Positioning System Receivers》的第8章,锁相环电路包括三部分:鉴相器、环路滤波器和压控振荡器。

经典的锁相环时域和s域图如下:

第4章:载波同步与锁相环仿真(1)_第2张图片

图1 经典锁相环时域图

θ i ( t ) {\theta _i}\left( t \right) θi(t) 表示输入信号, θ f ( t ) {\theta _f}\left( t \right) θf(t) 表示压控振荡器的输出信号, $\sum {} $ 表示鉴相器, k 0 {k_0} k0 是鉴相器增益, ε ( t ) \varepsilon \left( t \right) ε(t) 表示鉴相误差,所以有 ε ( t ) = θ i ( t ) − θ f ( t ) \varepsilon \left( t \right) = {\theta _i}\left( t \right) - {\theta _f}\left( t \right) ε(t)=θi(t)θf(t) 吗?

在这里一定要注意的是,实际在用鉴相器时, ε ( t ) \varepsilon \left( t \right) ε(t) 是关于 θ i ( t ) − θ f ( t ) {\theta _i}\left( t \right) - {\theta _f}\left( t \right) θi(t)θf(t) 这个相位差的函数,并不一定就等于相位差,这个要理解。

鉴相器的类型有很多种,之后结合代码讲解的时候会说到。

第4章:载波同步与锁相环仿真(1)_第3张图片

图2 经典锁相环的s域图

压控振荡器(VCO),顾名思义,是用电压来控制振荡器输出信号的相位,有:

ω 2 ( t ) = ω 0 ( t ) + k 1 u ( t ) {\omega _2}\left( t \right) = {\omega _0}\left( t \right) + {k_1}u\left( t \right) ω2(t)=ω0(t)+k1u(t) (1)

ω 0 {\omega _0} ω0 是压控振荡器的固有振荡角频率,即没有输入控制电压时振荡角频率。

k 1 {k_1} k1 是增益系数,模拟的振荡器是有线性控制范围的,超出范围后,就不呈现线性函数关系了。但由于我们采用数字实现,整个数字频率控制振荡器来讲,都一直是线性函数关系

从图2中可以得出:

V c ( s ) = k 0 ε ( s ) = k 0 [ θ i ( s ) − θ f ( s ) ] {V_c}\left( s \right) = {k_0}\varepsilon \left( s \right) = {k_0}[{\theta _i}\left( s \right) - {\theta _f}\left( s \right)] Vc(s)=k0ε(s)=k0[θi(s)θf(s)] (2)

V 0 ( s ) = V c ( s ) F ( s ) {V_0}\left( s \right) = {V_c}\left( s \right)F\left( s \right) V0(s)=Vc(s)F(s) (3)

θ f ( s ) = V 0 ( s ) k 1 s {\theta _f}\left( s \right) = {V_0}\left( s \right)\frac{{{k_1}}}{s} θf(s)=V0(s)sk1 (4)

由以上三个式子,可以化简得到下面:

H ( s ) ≡ θ f ( s ) θ i ( s ) = k 0 k 1 F ( s ) s + k 0 k 1 F ( s ) H\left( s \right) \equiv \frac{{{\theta _f}\left( s \right)}}{{{\theta _i}\left( s \right)}} = \frac{{{k_0}{k_1}F\left( s \right)}}{{s + {k_0}{k_1}F\left( s \right)}} H(s)θi(s)θf(s)=s+k0k1F(s)k0k1F(s) (4)

以上出现的“ ≡ \equiv ”均表示“定义为”,下同。也就是说, F ( s ) {F\left( s \right)} F(s)决定了整个锁相环的传输函数** [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 H ( s ) H\left( s \right) H(s)

那我们怎么来衡量一个锁相环的工作性能好不好呢?一般会用三类信号对锁相环进行测试:

(1) 相位阶跃信号: θ i ( t ) = u ( t ) {\theta _i}\left( t \right) = u\left( t \right) θi(t)=u(t) ,即对应 θ i ( s ) = 1 s {\theta _i}\left( s \right) = \frac{1}{s} θi(s)=s1

(2)频率阶跃信号: θ i ( t ) = Δ ω t {\theta _i}\left( t \right) = \Delta \omega t θi(t)=Δωt ,即对应 θ i ( s ) = Δ ω s 2 {\theta _i}\left( s \right) = \frac{{\Delta \omega }}{{{s^2}}} θi(s)=s2Δω

(3)频率斜升信号: θ i ( t ) = 1 2 R t 2 {\theta _i}\left( t \right) = \frac{1}{2}R{t^2} θi(t)=21Rt2 ,即对应 θ i ( s ) = R s 3 {\theta _i}\left( s \right) = \frac{R}{{{s^3}}} θi(s)=s3R

第4章:载波同步与锁相环仿真(1)_第4张图片

图3 各种类型环路的稳态误差

从图3可以看出,对于频率阶跃信号来说,一阶环的稳态误差不为0,因此一般不用一阶环路。三阶环路的复杂性比较高,不太好设计(我还没试过),所以综合来看,二阶环路用的比较多。

第4章:载波同步与锁相环仿真(1)_第5张图片

(这是郑继禹、张厥盛的《锁相技术》书籍中的图片,对于阶和型的命名,这张是正确的,读者明白就好了。)

F ( s ) = 1 1 + s τ 1 F\left( s \right) = \frac{1}{{1 + s{\tau _1}}} F(s)=1+sτ11 对应是RC积分滤波器, F ( s ) = 1 + s τ 2 1 + s τ 1 F\left( s \right) = \frac{{1 + s{\tau _2}}}{{1 + s{\tau _1}}} F(s)=1+sτ11+sτ2 对应是无源比例积分滤波器, F ( s ) = 1 + s τ 2 s τ 1 F\left( s \right) = \frac{{1 + s{\tau _2}}}{{s{\tau _1}}} F(s)=sτ11+sτ2 对应是理想二阶环,三者的 F ( s ) F\left( s \right) F(s) 不一样

由于RC积分滤波器、无源比例积分滤波器对于频率阶跃信号来说,稳态误差也不为0,因此常采用理想二阶环

上面两图中出现了“阶”与“型”,这两个字是什么意思呢?

“阶”是环路开环传递函数总极点的个数,“型”在原点的极点个数。

先记住:决定环路稳态相差的不是环路开环传递函数总极点的个数——阶,而是在原点处的极点个数——型

本文后面的代码实现,都将以理想二阶环路为例。

《Fundamentals of Global Positioning System Receivers》的第8章说到二阶环路时,一上来就写:

F ( s ) = s τ 2 + 1 s τ 1 F\left( s \right) = \frac{{s{\tau _2} + 1}}{{s{\tau _1}}} F(s)=sτ1sτ2+1 (5)

我当时还想了想为什么?

然后看到杜勇的《锁相环技术原理及FPGA实现》及郑继禹、张厥盛的《锁相技术》,里面均详细介绍了RC积分滤波器,无源比例积分滤波器,理想二阶环的区别。因此,我们暂且先记住以上提到的部分结论即可。

有了 F ( s ) = s τ 2 + 1 s τ 1 F\left( s \right) = \frac{{s{\tau _2} + 1}}{{s{\tau _1}}} F(s)=sτ1sτ2+1 ,代入 H ( s ) H\left( s \right) H(s) ,可得到

H ( s ) = k 0 k 1 τ 2 s τ 1 + k 0 k 1 τ 1 s 2 + k 0 k 1 τ 2 s τ 1 + k 0 k 1 τ 1 ≡ 2 ξ ω n s + ω n 2 s 2 + 2 ξ ω n s + ω n 2 H\left( s \right) = \frac{{\frac{{{k_0}{k_1}{\tau _2}s}}{{{\tau _1}}} + \frac{{{k_0}{k_1}}}{{{\tau _1}}}}}{{{s^2} + \frac{{{k_0}{k_1}{\tau _2}s}}{{{\tau _1}}} + \frac{{{k_0}{k_1}}}{{{\tau _1}}}}} \equiv \frac{{2\xi {\omega _n}s + \omega _n^2}}{{{s^2} + 2\xi {\omega _n}s + \omega _n^2}} H(s)=s2+τ1k0k1τ2s+τ1k0k1τ1k0k1τ2s+τ1k0k1s2+2ξωns+ωn22ξωns+ωn2 (6)

其中 ω n = k 0 k 1 τ 1 {\omega _n} = \sqrt {\frac{{{k_0}{k_1}}}{{{\tau _1}}}} ωn=τ1k0k1 ,叫做自然角频率, $\xi $ 是阻尼因子,后面会说到阻尼因子这个变量的值一般取多少

环路噪声带宽如下:

B n = ∫ 0 ∞ ∣ H ( ω ) ∣ d f = ω n 2 ( ξ + 1 4 ξ ) {B_n} = \int_0^\infty {\left| {H\left( \omega \right)} \right|} df = \frac{{{\omega _n}}}{2}\left( {\xi + \frac{1}{{4\xi }}} \right) Bn=0H(ω)df=2ωn(ξ+4ξ1) (7)

这个Bn在锁相环的参数设置中,是非常重要的一个量。

看了这么久公式,我们可能已经一脸懵逼了,甚至有点困倦了,回过头去不经思考:我们到底在干吗来着?

我们是要做锁相环的MATLAB代码实现,既然要实现数字系统,便就需要从连续域转到离散域。

那怎么从s域转到z域呢?

在本科的《数字信号处理》课程中,我们学习过IIR和FIR数字滤波器的设计方法,也伴随着有一些经典问题,比如IIR和FIR滤波器的区别?设计IIR滤波器,一般会讲脉冲响应不变法和双极性变换法,这两者的优缺点有哪些?

以上提到的问题,请读者思考几秒?(然后复习一下)

双极性变换法从s域到z域的映射公式如下:

s = 2 t s 1 − z − 1 1 + z − 1 s = \frac{2}{{{t_s}}}\frac{{1 - {z^{ - 1}}}}{{1 + {z^{ - 1}}}} s=ts21+z11z1 (8)

其中 t s {{t_s}} ts采样周期,代入上面的F(s),则有 F ( Z ) = C 1 + C 2 1 − z − 1 F\left( Z \right) = {C_1} + \frac{{{C_2}}}{{1 - {z^{ - 1}}}} F(Z)=C1+1z1C2 (9)

C 1 = 2 τ 2 − t s 2 τ 1 {C_1} = \frac{{2{\tau _2} - {t_s}}}{{2{\tau _1}}} C1=2τ12τ2ts (10)

C 2 = t s τ 1 {C_2} = \frac{{{t_s}}}{{{\tau _1}}} C2=τ1ts (11)

所以环路滤波器等效如下:

第4章:载波同步与锁相环仿真(1)_第6张图片

图4 环路滤波器的z域图

模拟电路中的压控振荡器,在数字中用NCO(数字频率合成器)代替,这是为什么呢?

第4章:载波同步与锁相环仿真(1)_第7张图片

第4章:载波同步与锁相环仿真(1)_第8张图片

图5 NCO的数字化模型

注意到图片里面7-27,数字域NCO相当于相位累加器,代码实现中也可以观察到累加的过程。

有了 N ( z ) = θ f ( z ) V 0 ( z ) ≡ k 1 z − 1 1 − z − 1 N(z) = \frac{{{\theta _f}\left( z \right)}}{{{V_0}\left( z \right)}} \equiv \frac{{{k_1}{z^{ - 1}}}}{{1 - {z^{ - 1}}}} N(z)=V0(z)θf(z)1z1k1z1 ,得到下面

第4章:载波同步与锁相环仿真(1)_第9张图片

第4章:载波同步与锁相环仿真(1)_第10张图片

img

第4章:载波同步与锁相环仿真(1)_第11张图片

假设你已经认真阅读过上面的公式后,为什么大概率还是没有写出可以实现的MATLAB代码呢?

这是由于z变换后,具体的程序是采用迭代来实现。

因此,我们需要将之前的表达式转换成迭代式子,方可让程序进行进行计算。

我将结合图与公式,将以上提到的材料转化成迭代表达式,便是我的一点点贡献了。

环路滤波器的z变换图上图所示,假设鉴相器的输入是 f ( i ) f(i) f(i) ,NCO的输出是 f i n ( i ) fin(i) fin(i) ,则有下列表达式:

i n p u t = k 0 ⋅ e r r o r ( i ) = k 0 ⋅ ( f ( i ) − f i n ( i ) ) input = {k_0} \cdot error(i) = {k_0} \cdot \left( {f(i) - fin(i)} \right) input=k0error(i)=k0(f(i)fin(i)) (12)

B ( i ) = k 0 ⋅ e r r o r ( i ) ⋅ C 1 + A ( i ) B\left( i \right) = {k_0} \cdot error(i) \cdot {C_1} + A(i) B(i)=k0error(i)C1+A(i) (13)

A ( i ) = k 0 ⋅ e r r o r ( i ) ⋅ C 2 + A ( i − 1 ) A\left( i \right) = {k_0} \cdot error(i) \cdot {C_2} + A(i - 1) A(i)=k0error(i)C2+A(i1) (14)

由材料中已经给出的N(Z)公式:

N ( Z ) = θ f ( Z ) V 0 ( Z ) = k 1 z − 1 1 − z − 1 N(Z) = \frac{{{\theta _f}\left( Z \right)}}{{{V_0}\left( Z \right)}} = \frac{{{k_1}{z^{ - 1}}}}{{1 - {z^{ - 1}}}} N(Z)=V0(Z)θf(Z)=1z1k1z1 (15)

转化到时域,有: θ f ( i + 1 ) − θ f ( i ) = k 1 ⋅ V 0 ( i ) {\theta _f}\left( {i + 1} \right) - {\theta _f}\left( i \right) = {k_1} \cdot {V_0}\left( i \right) θf(i+1)θf(i)=k1V0(i) (16)

f i n ( i + 1 ) = k 1 ⋅ B ( i ) + f i n ( i ) fin(i + 1) = {k_1} \cdot B\left( i \right) + fin(i) fin(i+1)=k1B(i)+fin(i) (17)

k 0 = k 1 = 1 {k_0} = {k_1} = 1 k0=k1=1 ,即可得到

for i = 2:length
    error(i) = f(i) - fin(i);
    A(i) = A(i-1) + error(i)*C2;
    B(i) = C1*error(i) + A(i);
    fin(i+1) = B(i) + fin(i);
end % end for i

以上这一段代码,是锁相环MATLAB代码的核心,后面都将以这段代码为基础进行仿真。

结合上面已经计算出来的:

C 1 = 1 k 0 k 1 ⋅ 8 ζ ω n t s 4 + 4 ζ ω n t s + ( ω n t s ) 2 {C_1} = \frac{1}{{{k_0}{k_1}}} \cdot \frac{{8\zeta {\omega _n}{t_s}}}{{4 + 4\zeta {\omega _n}{t_s} + {{({\omega _n}{t_s})}^2}}} C1=k0k114+4ζωnts+(ωnts)28ζωnts (18)

C 2 = 1 k 0 k 1 ⋅ 4 ( ω n t s ) 2 4 + 4 ζ ω n t s + ( ω n t s ) 2 {C_2} = \frac{1}{{{k_0}{k_1}}} \cdot \frac{{4{{({\omega _n}{t_s})}^2}}}{{4 + 4\zeta {\omega _n}{t_s} + {{({\omega _n}{t_s})}^2}}} C2=k0k114+4ζωnts+(ωnts)24(ωnts)2 (19)

其中 B n {{B_n}} Bn 是等效噪声带宽, t s {{t_s}} ts 是采样周期, d a m p = ζ damp = \zeta damp=ζ 是阻尼因子,

B n = ω n 2 ( ζ + 1 4 ζ ) {B_n} = \frac{{{\omega _n}}}{2}\left( {\zeta + \frac{1}{{4\zeta }}} \right) Bn=2ωn(ζ+4ζ1) (20)

第4章:载波同步与锁相环仿真(1)_第12张图片

图6 Bn=300,ts=1e-4时,二阶锁相环的跟踪性能

三、各参数对二阶数字锁相环的性能影响

在上面的代码中,可以调整不同的等效噪声带宽 B n {B_n} Bn 和采样周期 t s {{t_s}} ts ,观察这两个参数对二阶锁相环跟踪性能的影响。

忍不住好奇问,那为什么 ζ = 0.707 \zeta = 0.707 ζ=0.707 k 0 = k 1 = 1 {k_0} = {k_1} = 1 k0=k1=1?或者说,这三个参数对二阶锁相环的跟踪性能有什么影响呢?

先来理解一下“锁相环为什么能跟踪相位?”

第4章:载波同步与锁相环仿真(1)_第13张图片

第4章:载波同步与锁相环仿真(1)_第14张图片

第4章:载波同步与锁相环仿真(1)_第15张图片

继续来说,为什么 ζ = 0.707 \zeta = 0.707 ζ=0.707

第4章:载波同步与锁相环仿真(1)_第16张图片

相位裕度和增益裕度,伯德图等相关概念,本科的《模拟电子线路》,也叫《低频电子线路》讲到过,请读者自行百度或者复习之前课本哦,这就不展开说啦。

《锁相环技术原理及FPGA实现》中讲到:工程上为确保环路稳定,要求增益裕度大于等于6dB,相位裕度30度到60度。

那么 k 0 {k_0} k0 k 1 {{k_1}} k1 对二阶锁相环的性能有什么影响呢?

第4章:载波同步与锁相环仿真(1)_第17张图片

图片中的 K z {K_z} Kz 即是上面一直提的 k 0 k 1 {{k_0}{k_1}} k0k1

上面的锁相环核心代码中,只用到了 C 1 {C_1} C1 C 2 {C_2} C2 ,而 C 1 {C_1} C1 C 2 {C_2} C2均与 t s {{t_s}} ts 、 $\xi $ 、 ω n {{\omega _n}} ωn

k 0 {{k_0}} k0 k 1 {{k_1}} k1 有关,固定了 k 0 {{k_0}} k0 k 1 {{k_1}} k1 、 $\xi , 而 ,而 {{t_s}}$ 一般就是符号速率的倒数,后面代码将看到

因此,调整噪声带宽Bn便是相当于调整 ω n {{\omega _n}} ωn ,进而调整 C 1 {C_1} C1 C 2 {C_2} C2

上面讲到了NCO是相位累加器的作用,下面结合MATLAB代码,从相位误差来看,锁相环是如何锁相的。

第4章:载波同步与锁相环仿真(1)_第18张图片

可以看到锁相环已经能够顺利对多普勒频偏进行补偿,产生同频同相的载波。

解释一下上面一段代码:

%%%%%%为了看到频差
    if(k>200) &&(k

这个用等差数列来解释就好理解,当锁相环已经处于同步态时:

p h a s e ( 2 ) − p h a s e ( 1 ) = 2 p i ⋅ Δ f t s phase(2) - phase(1) = 2pi \cdot \Delta f{t_s} phase(2)phase(1)=2piΔfts (21)

所以也就有:

Δ f = p h a s e ( 101 ) − p h a s e ( 1 ) 100 ⋅ 2 p i ⋅ t s \Delta f = \frac{{phase(101) - phase(1)}}{{100 \cdot 2pi \cdot {t_s}}} Δf=1002pitsphase(101)phase(1) (22)

至于为什么取100,其实取别的数也行。

对于二阶理想锁相环来说,只有时间足够长,都是可以同步上的。但在实际仿真中,我们是需要比较快的捕获并且跟踪上信号频率的。

这是为什么呢?(思考几秒?)

假设有10个符号过来,接收机在第8个符号时间才同步上,那么前几个符号在进行相干解调时,便没有提供同频同相的载波,判决便可能出错,因此希望尽可能快的同步上。

四、总结

每次写到1万字左右时,知乎后台编辑器便开始不流畅了,扎心了。于是,如何用锁相环对2psk信号进行相干解调的文章写到下一篇

特别感谢微信公众号“通信工程师专辑”的蔡凡博士,本人虽学习兴趣浓厚,但能力有限,且缺少大型工程项目实践,不足甚至错误之处,真的在所难免,欢迎你批评指正。

也非常欢迎读者朋友就以上讲到的相关技术问题与我交流,一起学习,共同进步。请你也别忘了把这篇文章分享给你身边正在学习通信专业的同学们,也许能够帮到Ta。这是《陈老湿·通信MATLAB》仿真的第4章,期待下次更新见!

你可能感兴趣的:(陈老湿·通信MATLAB仿真,数字通信,同步,psk,matlab)