对于调制信号,我们可以通过其功率谱(PSD)来研究其频谱特性。因为无线电频谱是有限且十分珍贵的资源,一个调制信号的 PSD 能够反应其频谱占用情况,是研究信号特性的重要工具。

# 随机过程

随机过程是通信系统中的一个基础概念,也是通信系统中的一个基础概念。

一个随机过程X(t)X(t) 是一组依赖于变量tt 的随机变量。定义随机过程X(t)X(t) 的均值mX(t)m_X(t) 和自相关函数RX(t1,t2)R_X(t_1,t_2)

mX(t)=E[X(t)]RX(t1,t2)=E[X(t1)X∗(t2)]m_X(t) = \mathbb{E}[X(t)]\\[2ex] R_X(t_1,t_2) = \mathbb{E}[X(t_1)X^*(t_2)]

两个随机过程X(t)X(t) 和Y(t)Y(t) 的互相关函数

RXY(t1,t2)=E[X(t1)Y∗(t2)]R_{XY}(t_1,t_2)= \mathbb{E}[X(t_1)Y^*(t_2)]

如果RX(t1,t2)=RX∗(t1,t2)R_X(t_1,t_2)=R_X^*(t_1,t_2) 那么这个过程是 Hermitian 对称的,互相关函数定义类似。

如果一个随机过程X(t)X(t) 的均值是一个常数,RX(t1,t2)=RX(τ)R_X(t_1,t_2)=R_X(\tau),τ=t1−t2\tau=t_1-t_2,这个过程就是广义平稳过程(WSS)。WSS 随机过程的功率谱密度是描述了其功率关于频率分布的函数SX(f)S_X(f)。Wiener-Khinchin 定理说明了,WSS 过程的功率谱是自相关函数RX(τ)R_X(\tau) 的 Fourier 变换:

SX(f)=F[RX(τ)]\mathcal{S}_X(f)=\mathcal{F}[R_X(\tau)]

如果随机过程X(t)X(t) 的均值和自相关函数都是以T0T_0 周期的周期函数,那么这个随机过程是一个循环平稳(Cyclostationary)过程。循环平稳过程满足:

mX(t+T0)=mX(t)RX(t1+T0,t2+T0)=RX(t1,t2)m_X(t+T_0)=m_X(t)\\[2ex] R_X(t_1+T_0,t_2+T_0)=R_X(t_1,t_2)

对于循环平稳过程,其平均自相关函数是其在一个周期内的自相关函数的平均值:

RX(t)‾1T0∫0T0RX(t+τ,t)dt\overline{R_X(t)}\frac{1}{T_0}\int_{0}^{T_0}R_X(t+\tau,t){\rm d}t

循环平稳随机过程的平均功率谱密度为平均自相关函数的 Fourier 变换:

SX(f)‾=F[RX(t)‾]\overline{S_X(f)}=\mathcal{F}[\overline{R_X(t)}]

# 一般信号的功率谱

我们写一个一般情况下的低通信号:

v1(t)=∑n=−∞∞s(t−nT;In)\boldsymbol{v}_1(t)=\sum_{n=-\infty}^{\infty}s(t-nT;\boldsymbol{I_n})

那么这个信号的数学期望是

E[vk(t)]=∑n=−∞∞E[In]g(t−nT)=μI∑n=−∞∞g(t−nT)=E[v1(t+T)]\mathbb{E}[\boldsymbol{v}_k(t)]=\sum_{n=-\infty}^{\infty}\mathbb{E}[\boldsymbol{I_n}]g(t-nT)=\mu_{\boldsymbol{I}}\sum_{n=-\infty}^{\infty}g(t-nT)=\mathbb{E}[\boldsymbol{v}_1(t+T)]

这个信号的自相关函数

Rv1(t1,t2)=E[v1(t1)v1∗(t2)]=∑n=−∞∞∑m=−∞∞E[InIm∗]g(t1−nT)g∗(t2−mT)=Rv1(t1+T,t2+T)R_{v1}(t_1,t_2)=\mathbb{E}[\boldsymbol{v}_1(t_1)\boldsymbol{v}_1^*(t_2)]=\sum_{n=-\infty}^{\infty}\sum_{m=-\infty}^{\infty}\mathbb{E}[\boldsymbol{I}_n\boldsymbol{I}_m^*]g(t_1-nT)g^*(t_2-mT)=R_{v1}(t_1+T,t_2+T)

上面的数学期望和自相关函数说明了这个信号是一个循环平稳过程。因此,我们可以通过平均自相关函数的 Fourier 变换来计算其功率谱密度:

R‾v1(t)=1T∫0T∑n=−∞∞∑m=−∞∞RI(n−m)g(t+τ−nT)g∗(t+τ−mT)dτ=k=n−m1T∑k=−∞∞RI(k)∑m=−∞∞∫0Tg(t+τ−kT−mT)g∗(t−mT)dt=u=t−mT1T∑k=−∞∞RI(k)∑m=−∞∞∫−mT−(m−1)Tg(u+τ−kT)g∗(u)du=1T∑k=−∞∞RI(k)∫−∞∞g(u+τ−kT)g∗(u)du\begin{aligned} &\overline{R}_{v1}(t)\\ =&\frac{1}{T}\int_0^T\sum_{n=-\infty}^{\infty}\sum_{m=-\infty}^{\infty}R_{\boldsymbol{I}}(n-m)g(t+\tau-nT)g^*(t+\tau-mT){\rm d}\tau\\ \stackrel{k=n-m}{=}&\frac{1}{T}\sum_{k=-\infty}^{\infty}R_{\boldsymbol{I}}(k)\sum_{m=-\infty}^{\infty}\int_0^Tg(t+\tau-kT-mT)g^*(t-mT){\rm d}t\\ \stackrel{u=t-mT}{=}&\frac{1}{T}\sum_{k=-\infty}^{\infty}R_{\boldsymbol{I}}(k)\sum_{m=-\infty}^{\infty}\int_{-mT}^{-(m-1)T}g(u+\tau-kT)g^*(u){\rm d}u\\ =&\frac{1}{T}\sum_{k=-\infty}^{\infty}R_{\boldsymbol{I}}(k)\int_{-\infty}^{\infty}g(u+\tau-kT)g^*(u){\rm d}u \end{aligned}

令

gm(τ)=RI(m)∫−∞∞g(u+τ)g∗(u)dug_m(\tau)=R_{\boldsymbol{I}}(m)\int_{-\infty}^{\infty} g(u+\tau)g^*(u){\rm d}u

带入得到

R‾v1(t)=1T∑k=−∞∞gm(τ−kT)\begin{aligned} &\overline{R}_{v1}(t)\\ =&\frac{1}{T}\sum_{k=-\infty}^{\infty}g_m(\tau-kT) \end{aligned}

这部分式子依旧是十分复杂的,难以进行计算。然而,我们观察gm(τ)g_m(\tau),应该能够发现这个函数的形式类似卷积。考虑到卷积的性质,这个函数在频域上的表达式应该会比较清晰。

我们将gm(τ)g_m(\tau) 移到频域上,得到:

Gm(f)=∫−∞∞gm(τ)e−j2πfτdτ=∫−∞∞(RI(m)∫−∞∞g(u+τ)g∗(u)du)e−j2πfτdτ=RI(m)∫−∞∞(∫−∞∞g(u+τ)e−j2πfτdτ)g∗(u)du=v=u+tRI(m)∫−∞∞(∫−∞∞g(v)e−j2πfvdv)g∗(u)du=RI(m)∫−∞∞g(v)e−j2πfvdv∫−∞∞g∗(u)e−j2πfudu=RI(m)∣G(f)∣2\begin{aligned} &G_m(f)\\ =&\int_{-\infty}^{\infty}g_m(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\int_{-\infty}^{\infty}(R_{\boldsymbol{I}}(m)\int_{-\infty}^{\infty} g(u+\tau)g^*(u){\rm d}u)e^{-j2\pi f\tau}{\rm d}\tau\\ =&R_{\boldsymbol{I}}(m)\int_{-\infty}^{\infty}(\int_{-\infty}^{\infty}g(u+\tau)e^{-j2\pi f\tau}{\rm d}\tau)g^*(u){\rm d}u\\ \stackrel{v=u+t}{=}&R_{\boldsymbol{I}}(m)\int_{-\infty}^{\infty}(\int_{-\infty}^{\infty}g(v)e^{-j2\pi fv}{\rm d}v)g^{*}(u){\rm d}u\\ =&R_{\boldsymbol{I}}(m)\int^{\infty}_{-\infty}g(v)e^{-j2\pi fv}{\rm d}v\int^{\infty}_{-\infty}g^{*}(u)e^{-j2\pi fu}{\rm d}u\\ =&R_{\boldsymbol{I}}(m)|G(f)|^2 \end{aligned}

这样子,对上面自相关函数进行 Fourier 变换,并且带入这里的Gm(f)G_m(f),我们就得到了这个信号的功率谱密度函数:

S‾v1(f)=F{R‾v1(t)}=1T∑k=−∞∞F{gk(t−kT)}=1T∑k=−∞∞RI(m)∣G(f)∣2e−2πkfT=1TSI(f)∣G(f)∣2\begin{aligned} &\overline{S}_{v1}(f)\\ =&\mathcal{F}\{\overline{R}_{v1}(t)\}\\ =&\frac{1}{T}\sum_{k=-\infty}^{\infty}\mathcal{F}\{g_k(t-kT)\}\\ =&\frac{1}{T}\sum_{k=-\infty}^{\infty}R_{\boldsymbol{I}}(m)|G(f)|^2e^{-2\pi kfT}\\ =&\frac{1}{T}S_{\boldsymbol{I}}(f)|G(f)|^2 \end{aligned}

其中

SI(f)=∑k=−∞∞RI(k)e−j2πkfTS_{I}(f)=\sum_{k=-\infty}^{\infty}R_I(k)e^{-j2\pi kfT}

这样子,我们就得到了数字通信的功率谱的一般表达式。这个表达式说明了两个因素决定了功率谱的形状,一个是信息序列的自相关函数,另一个是 pulse shaping function 的频谱。

# 互不相关的信息序列下的功率谱

考虑输入一个互不相关的信息序列,其自相关函数为

RI(k)={μI2+σI2,k=0μI2,k≠0R_{I}(k)=\begin{cases} \mu_I^2+\sigma_I^2&,k=0\\ \mu_I^2&,k\neq 0 \end{cases}

那么

SI(f)=σI2+μI2∑l=−∞∞e−j2πfkTS_I(f)=\sigma_I^2+\mu_I^2\sum_{l=-\infty}^{\infty}e^{-j2\pi fkT}

根据 Poisson 求和公式:

∑k=−∞∞e−j2πfkT=1T∑−∞∞δ(f−kT)\sum_{k=-\infty}^{\infty}e^{-j2\pi fkT}=\frac{1}{T}\sum_{-\infty}^{\infty}\delta(f-\frac{k}{T})

带入SI(f)S_I(f)

SI(f)=σI2+μI2T∑k=−∞∞δ(f−kT)S_I(f)=\sigma_I^2+\frac{\mu_I^2}{T}\sum_{k=-\infty}^{\infty}\delta(f-\frac{k}{T})

带入到S‾v1(f)\overline{S}_{v1}(f) 中,我们得到:

S‾v1(f)=σI2T∣G(F)∣2⏟continuous+μI2T∑k=−∞∞δ(f−kT)∣G(f)∣2⏟discrete\overline{S}_{v1}(f)=\underbrace{\frac{\sigma_I^2}{T}|G(F)|^2}_{continuous}+\underbrace{\frac{\mu_I^2}{T}\sum_{k=-\infty}^{\infty}\delta(f-\frac{k}{T})|G(f)|^2}_{discrete}

也就是这样的一个信号的功率谱分为了连续和离散的两个部分,如果信息序列的数学期望为 0,那么这个信号的功率谱就没有离散的部分,功率谱的形状完全由脉冲整形函数决定。在实际的使用中,我们一般是希望有尽可能少的冲激函数部分,因此我们都会尽可能希望信息序列的数学期望为 0。

# 使用方波的情况

如果我们使用方波作为g(t)g(t),即

g(t)=A[u−1−u−1(t−T)]g(t)=A[u_{-1}-u_{-1}(t-T)]

其 Fourier 变换为

G(F)=ATsinc(fT)e−jπfTG(F)=AT{\rm sinc}(fT)e^{-j\pi fT}

那么其功率谱为

Sv1‾(f)=σI2T∣G(f)∣2+μI2T∑k=−∞∞δ(f−kT)∣G(f)∣2=σI2A2Tsinc2(fT)+μI2A2δ(f)\begin{aligned} &\overline{S_v1}(f)\\ =&\frac{\sigma_I^2}{T}|G(f)|^2+\frac{\mu_I^2}{T}\sum_{k=-\infty}^{\infty}\delta(f-\frac{k}{T})|G(f)|^2\\ =&\sigma^2_IA^2T{\rm sinc}^2(fT)+\mu_I^2A^2\delta(f) \end{aligned}

我们知道sinc(x){\rm sinc}(x) 函数有一个特殊的性质,对于x=±1,±2,...x=\pm 1,\pm 2,...,sinc(x){\rm sinc}(x) 的值为 0,这样就使得在μI≠0\mu_I\neq 0 的情况下,信号的功率谱也就只会在f=0f=0 处有一个高度为μI2A2\mu_I^2A^2 的冲激函数。

# 使用升余弦函数的情况

如果我们使用升余弦函数作为g(t)g(t),即

g(t)=A2[1+cos⁡(2πT(t−T2))](u−1(t)−u−1(t−T))g(t)=\frac{A}{2}[1+\cos(\frac{2\pi}{T}(t-\frac{T}{2}))](u_{-1}(t)-u_{-1}(t-T))

其 Fourier 变换为

G(f)=AT2sinc(fT)11−f2T2e−jπfTG(f)=\frac{AT}{2}{\rm sinc}(fT)\frac{1}{1-f^2T^2}e^{-j\pi fT}

带入其功率谱,得到

Sv1‾(f)=σI2A2Tsinc2(fT)4(1−f2T2)2+μI2A24δ(f)+μI2A216δ(f−1T)+μI2A216δ(f+1T)\overline{S_v1}(f) =\frac{\sigma_I^2A^2T{\rm sinc}^2(fT)}{4(1-f^2T^2)^2}+\frac{\mu_I^2A^2}{4}\delta(f)+\frac{\mu_I^2A^2}{16}\delta(f-\frac{1}{T})+\frac{\mu_I^2A^2}{16}\delta(f+\frac{1}{T})

这里注意其中一步化简需要用到一个常用的极限:

lim⁡x→±1sinc2(x)(1−x2)2=14\lim_{x\to \pm 1}\frac{\text{\rm sinc}^2(x)}{(1-x^2)^2}=\frac{1}{4}

如果从S‾v1(f)\overline{S}_{v1}(f) 来看的话,使用 RC 函数的功率谱关于ff 的衰减为1/f61/f^{6},而使用了方波的情况为1/f21/f^2,这也就意味着使用 RC 函数的情况下,信号的能量更加集中。

我们绘制两种情况下的功率谱图:

可以看到 RC 的旁瓣更大,但是衰减速度更快,能量更加集中在中心频率上。一般来说,脉冲整形函数的波形越平滑(能够连续微分的阶数更高),其功率谱衰减更快。

当然,尽管 RC 的性能是优于方波的,但是其实现成本更高,这也需要进行取舍。

# 相互关联的信息序列的功率谱

考虑一个特殊的情况,信息序列为In=bn+bn+1I_n=b_n+b_{n+1},其中bnb_n 为互不相关,均值为 0,方差为 1 的信息序列。此时InI_n 的自相关函数:

RI(k)={2,k=01,k=10,otherwiseR_I(k)=\begin{cases} 2&,k=0\\ 1&,k=1\\ 0&,otherwise \end{cases}

此时信息序列的功率谱为:

SI(f)=2+Bj2πfT+e−j2πfT=4cos⁡2(πfT)\begin{aligned} S_I(f)=2+B^{j2\pi fT}+e^{-j2\pi fT}=4\cos^2(\pi fT) \end{aligned}

这样频谱的宽度更窄,同时衰减速度也变快。

# CPFSK 和 CPM 的功率谱

CPM 信号的功率谱推导过程和前面的稍有区别,我们考虑独立同分布的信息序列I\boldsymbol{I},CPM 信号表示为

v1(t)=ejϕ(t;I)\boldsymbol{v}_1(t)=e^{j\phi(t;\boldsymbol{I})}

其中

ϕ(t;I)=2πh∑k=−∞∞Ikq(t−kT)\phi(t;\boldsymbol{I})=2\pi h\sum_{k=-\infty}^{\infty}I_kq(t-kT)

我们计算其自相关函数

Rv1(t1,t2)=E[v1(t1)v1∗(t2)]=E[ejϕ(t1;I)e−jϕ(t2;I)]=E[exp⁡(j2πh∑k=−∞∞Ik[q(t1−kT)−q(t2−kT)])]=E[∏k=−∞∞exp⁡(j2πhIk[q(t1−kT)−q(t2−kT)])]=∏k=−∞∞E[exp⁡(j2πhIk[q(t1−kT)−q(t2−kT)])]=∏k=−∞∞[∑n∈SPnexp⁡(j2πhn[q(t1−kT)−q(t2−kT)])]\begin{aligned} &R_{v1}(t_1,t_2)\\ =&\mathbb{E}[\boldsymbol{v}_1(t_1)\boldsymbol{v}^*_1(t_2)]\\ =&\mathbb{E}[e^{j\phi(t_1;\boldsymbol{I})}e^{-j\phi(t_2;\boldsymbol{I})}]\\ =&\mathbb{E}[\exp(j2\pi h\sum_{k=-\infty}^{\infty}I_k[q(t_1-kT)-q(t_2-kT)])]\\ =&\mathbb{E}[\prod_{k=-\infty}^{\infty}\exp(j2\pi hI_k[q(t_1-kT)-q(t_2-kT)])]\\ =&\prod_{k=-\infty}^{\infty}\mathbb{E}[\exp(j2\pi hI_k[q(t_1-kT)-q(t_2-kT)])]\\ =&\prod_{k=-\infty}^{\infty}[\sum_{n\in\mathcal{S}}P_n\exp(j2\pi hn[q(t_1-kT)-q(t_2-kT)])] \end{aligned}

这里记所有可能取值的码字Ik=n∈SI_k=n\in\mathcal{S},其中Ik=nI_k=n 的概率为PnP_n。上述步骤中一些转换需要利用到独立同分布的性质。

接下来,我们计算周期内的平均自相关函数:

R‾v1(τ)=1T∫0TRv1(t+τ,t)dt=1T∫0T∏k=−∞∞[∑n∈SPnexp⁡(j2πhn[q(t+τ−kT)−q(t−kT)])]dt\begin{align} &\overline{R}_{v1}(\tau)\\ =&\frac{1}{T}\int_0^T R_{v1}(t+\tau,t){\rm d}t\\ =&\frac{1}{T}\int_0^T\prod_{k=-\infty}^{\infty}[\sum_{n\in\mathcal{S}}P_n\exp(j2\pi hn[q(t+\tau-kT)-q(t-kT)])]{\rm d}t\\ \end{align}

这个很不好,包含了积分连乘和累加,同时连乘还是无限多项的。但是我们注意到,如果指数中的j2πhn[q(t+τ−kT)−q(t−kT)])=0j2\pi hn[q(t+\tau-kT)-q(t-kT)])=0,那么这一部分累乘中间的部分就是∑n∈SPne0=1\sum_{n\in \mathcal{S}}P_ne^0=1,这部分就不用参加累乘计算了。

我们那么就需要来考量一下这个部分的特性。

前面一节提到了 phase shaping function q(t)q(t) 的性质,这一部分在t<0t<0 时值为 0,在t>LTt>LT 时值为1/21/2。

我们设置一个整数mm,满足mT≤τ=ξ+mT<(m+1)TmT\le\tau=\xi + mT<(m+1)T,ξ∈[0,1)\xi\in[0,1)。

这样子对于q(t−kT)q(t-kT) 和q(t+τ−kT)q(t+\tau-kT),t∈[0,T)t\in[0,T),在k<min⁡{1−L,m+1−L}k<\min\{1-L,m+1-L\} 时,两个取值都是 0,在k>max⁡{0,m+1}k>\max\{0,m+1\} 时,两个取值都是1/21/2,这两段区间上两个函数相减,指数均为 0,可以不用讨论。

那么平均自相关函数就变成了:

R‾v1(τ)=1T∫0T∏k=min⁡{m+1−L,1−L}max⁡{m+1,0}[∑n∈SPnej2πhn[q(t+τ−kT)−q(t−kT)]]dt=1T∫0T∏k=1−Lm+1[∑n∈SPnej2πhn[q(t+τ−kT)−q(t−kT)]dt\begin{align} &\overline{R}_{v1}(\tau)\\ =&\frac{1}{T}\int_{0}^{T}\prod_{k=\min\{m+1-L,1-L\}}^{\max\{m+1,0\}}[\sum_{n\in\mathcal{S}}P_ne^{j2\pi hn[q(t+\tau-kT)-q(t-kT)]}]{\rm d}t\\ =&\frac{1}{T}\int_{0}^{T}\prod_{k=1-L}^{m+1}[\sum_{n\in\mathcal{S}}P_ne^{j2\pi hn[q(t+\tau-kT)-q(t-kT)]}{\rm d}t \end{align}

接下来把平均自相关函数进行 Fourier 变换,得到功率谱密度。这里补充一点,这里的平均自相关函数满足 Hermitian 对称性,所以

R‾v1(−τ)=R‾v1∗(τ)\overline{R}_{v1}(-\tau)=\overline{R}_{v1}^*(\tau)

进行 Fourier 变换:

S‾v1(f)=∫−∞∞R‾v1(τ)e−j2πfτdτ=∫−∞0R‾v1(τ)e−j2πfτdτ+∫0∞R‾v1(τ)e−j2πfτdτ=∫0∞R‾v1(−τ)ej2πfτdτ+∫0∞R‾v1(τ)e−j2πfτdτ=∫0∞(R‾v1(τ)e−j2πfτ)∗dτ+∫0∞R‾v1(τ)e−j2πfτdτ=2Re{∫0∞R‾v1(τ)e−j2πfτdτ}\begin{aligned} &\overline{S}_{v1}(f)\\ =&\int_{-\infty}^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\int_{-\infty}^{0}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau+\int_{0}^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\int_{0}^{\infty}\overline{R}_{v1}(-\tau)e^{j2\pi f\tau}{\rm d}\tau+\int_{0}^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\int_{0}^{\infty}(\overline{R}_{v1}(\tau)e^{-j2\pi f\tau})^*{\rm d}\tau+\int_{0}^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&2{\rm Re}\{\int_0^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\} \end{aligned}

这里面的∫0∞R‾v1(τ)e−j2πfτdτ\int_0^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau 展开,这一部分中,我们注意到,如果m≥Lm\ge L,对于q(t−kT)q(t-kT) 和q(t+τ−kT)q(t+\tau-kT),t∈[0,T)t\in[0,T),m+1−L>0m+1-L>0,此时两个 phase shaping function 变化段没有重叠!

∫0∞R‾v1(τ)e−j2πfτdτ=∫0LTR‾v1(τ)e−j2πfτdτ+∫LT∞R‾v1(τ)e−j2πfτdτ=∫0LTR‾v1(τ)e−j2πfτdτ+∑m=L∞∫mT(m+1)TR‾v1(τ)e−j2πfτdτ\begin{aligned} &\int_0^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\int_{0}^{LT}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau+\int_{LT}^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\int_{0}^{LT}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau+\sum_{m=L}^{\infty}\int_{mT}^{(m+1)T}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau \end{aligned}

这时候前面一项范围有限,但是后面一项还有无穷级数,不过上面说了,对于m≥Lm\ge L 的情况,两个 phase shaping function 变化段没有重叠,因此:

R‾v1(τ)=1T∫0T∏k=1−Lm+1[∑n∈SPnej2πhn[q(t+τ−kT)−q(t−kT)]]dt=1T([∏k=1−L0Pnej2πhn[q(t+τ−kT)−q(t−kT)]]×[∏k=1m−LPnej2πhn[q(t+τ−kT)−q(t−kT)]]×[∏k=M−L+1m+1Pnej2πhn[q(t+τ−kT)−q(t−kT)]])\begin{aligned} &\overline{R}_{v1}(\tau)\\ =&\frac{1}{T}\int_{0}^{T}\prod_{k=1-L}^{m+1}[\sum_{n\in S}P_ne^{j2\pi hn[q(t+\tau-kT)-q(t-kT)]}]{\rm d}t\\ =&\frac{1}{T}([\prod_{k=1-L}^{0}P_ne^{j2\pi hn[q(t+\tau-kT)-q(t-kT)]}]\\ &\times[\prod_{k=1}^{m-L}P_ne^{j2\pi hn[q(t+\tau-kT)-q(t-kT)]}]\\ &\times[\prod_{k=M-L+1}^{m+1}P_ne^{j2\pi hn[q(t+\tau-kT)-q(t-kT)]}])\\ \end{aligned}

这里将连乘中的项分为了三个部分,这三个部分分别对应了q(t−kT)q(t-kT) 和q(t+τ−kT)q(t+\tau-kT) 各自的变化段和中间的不变段,因此我们得到:

R‾v1(τ)  (m≥L)=1T([∏k=1−L0Pnej2πhn[12−q(t−kT)]]×[∏k=1m−LPnej2πhn[12−0]]×[∏k=M−L+1m+1Pnej2πhn[q(t+τ−kT)−0]])\begin{aligned} &\overline{R}_{v1}(\tau)\;(m\ge L)\\ =&\frac{1}{T}([\prod_{k=1-L}^{0}P_ne^{j2\pi hn[\frac{1}{2}-q(t-kT)]}]\\ &\times[\prod_{k=1}^{m-L}P_ne^{j2\pi hn[\frac{1}{2}-0]}]\\ &\times[\prod_{k=M-L+1}^{m+1}P_ne^{j2\pi hn[q(t+\tau-kT)-0]}])\\ \end{aligned}

令

ϕI(h)=∑n∈SPnejπhn\phi_I(h)=\sum_{n\in \mathcal S}P_ne^{j\pi hn}

称为特征函数,则有:

R‾v1(τ)  (m≥L)=1T∫0T(∏k=1−L0[∑n∈SPnej2πhn[12−q(t−kT)]][ϕI(h)]m−L)[∏k′=1−L1[∑n∈SPnej2πhn[q(t+τ−k′T−mT)]]]dt=[ϕI(h)]m−Lλ(τ−mT)\begin{aligned} &\overline{R}_{v1}(\tau)\;(m\ge L)\\ =&\frac{1}{T}\int_{0}^{T}(\prod_{k=1-L}^{0}[\sum_{n\in \mathcal S}P_ne^{j2\pi hn[\frac{1}{2}-q(t-kT)]}][\phi_I(h)]^{m-L})[\prod_{k'=1-L}^{1}[\sum_{n\in \mathcal S}P_ne^{j2\pi hn[q(t+\tau-k'T-mT)]}]]{\rm d}t\\ =&[\phi_I(h)]^{m-L}\lambda(\tau-mT) \end{aligned}

这里λ(ξ)\lambda(\xi) 定义为:

λ(ξ)=1T∫0T(∏k=1−L0[∑n∈SPnej2πhn[12−q(t−kT)]]∏k′=1−L1[∑h∈SPnej2πhnq(t+ξ−k′T)])dt\lambda(\xi)=\frac{1}{T}\int_{0}^{T}(\prod_{k=1-L}^{0}[\sum_{n\in\mathcal S}P_ne^{j2\pi hn[\frac{1}{2}-q(t-kT)]}]\prod_{k'=1-L}^{1}[\sum_{h\in\mathcal S}P_ne^{j2\pi hnq(t+\xi-k'T)}]){\rm d}t

继续带入前面的∫0∞R‾v1(τ)e−j2πfτdτ\int_0^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau,得到

∫0∞R‾v1(τ)e−j2πfτdτ=∑m=L∞∫mT(m+1)T[ϕI(h)]m−Lλ(τ−mT)e−j2πfτdτ=∑m=L∞∫0T[ϕI(h)]m−Lλ(ξ)e−j2πf(ξ+mT)dξ,  (ξ=τ−mT)=(∑m=L∞ϕI(h)m−L)(∫0Tλ(ξ)e−j2πfξdξ)={e−jπfLT1−ϕI(h)e−j2πfT∫0Tλ(ξ)e−j2πfξdξ,∣ϕI(h)∣<1(e−j2πfLT∑m′=0∞e−j2πT(f−v/T)m′)(∫0∞λ(ξ)e−j2πfξdξ),∣ϕI(h)∣=∣ej2πv∣=1\begin{aligned} &\int_0^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\sum_{m=L}^{\infty}\int_{mT}^{(m+1)T}[\phi_I(h)]^{m-L}\lambda(\tau-mT)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\sum_{m=L}^{\infty}\int_{0}^{T}[\phi_I(h)]^{m-L}\lambda(\xi)e^{-j2\pi f(\xi+mT)}{\rm d}\xi,\;(\xi=\tau-mT)\\ =&({\color{blue}\sum_{m=L}^{\infty}\phi_I(h)^{m-L}})(\int_{0}^{T}\lambda(\xi)e^{-j2\pi f\xi}{\rm d}\xi)\\ =&\begin{cases} \frac{e^{-j\pi fLT}}{1-\phi_I(h)e^{-j2\pi fT}}\int_{0}^{T}\lambda(\xi)e^{-j2\pi f\xi}{\rm d}\xi,&|\phi_I(h)|<1\\[2ex] (e^{-j2\pi fLT}\sum_{m'=0}^\infty e^{-j2\pi T(f-v/T)m'})(\int_0^\infty\lambda(\xi)e^{-j2\pi f\xi}{\rm d}\xi),&|\phi_I(h)|=|e^{j2\pi v}|=1 \end{cases} \end{aligned}

这边蓝色部分是一个复数的等比数列,我们能够套用求和公式。不过这里有个问题,公比可以是 1,这就不好办了。在这种情况下,我们令

ϕI(h)=ej2πv\phi_I(h)=e^{j2\pi v}

下面来看一下这个等比数列特殊情况下的求和。前面提到了 Poisson 求和公式,我们这里也要用到。现在考虑一个单位阶跃函数:

u−1(t)={1,t>012,t=00,t<0u_{-1}(t)=\begin{cases} 1,&t>0\\ \frac{1}{2},&t=0\\ 0,&t<0 \end{cases}

其 Fourier 变换为

U−1(f)=12(δ(f)−j1πf)U_{-1}(f)=\frac{1}{2}(\delta(f)-j\frac{1}{\pi f})

我们通过间隔TsT_s 无限冲激序列对这个函数进行采样,利用冲激函数的性质:

U−1,δ(f)=∑n=−∞∞u−1(nTs)e−j2πnTsf=12+∑n=1∞e−j2πnTsf=−12+∑n=0∞e−j2πnTsf\begin{aligned} &U_{-1,\delta}(f)\\ =&\sum_{n=-\infty}^{\infty}u_{-1}(nT_s)e^{-j2\pi nT_sf}\\ =&\frac{1}{2}+\sum_{n=1}^{\infty}e^{-j2\pi nT_sf}\\ =&-\frac{1}{2}+\sum_{n=0}^{\infty}e^{-j2\pi nT_sf} \end{aligned}

而套用 Poisson 求和公式,我们得到:

U−1,δ(f)=1Ts∑n=−∞∞U−1(f−nTs)=12Ts∑n=−∞∞(δ(f−nTs−j1π(f−nTs)))\begin{aligned} &U_{-1,\delta}(f)\\ =&\frac{1}{T_s}\sum_{n=-\infty}^{\infty}U_{-1}(f-\frac{n}{T_s})\\ =&\frac{1}{2T_s}\sum_{n=-\infty}^{\infty}(\delta(f-\frac{n}{T_s}-j\frac{1}{\pi(f-\frac{n}{T_s})})) \end{aligned}

联立两式,我们得到

∑m′=0∞e−j2πT(f−v/T)m′=12+12T∑m′=−∞∞(δ(f−v+m′T)−j1π(f−v+m′T))\sum_{m'=0}^\infty e^{-j2\pi T(f-v/T)m'}=\frac{1}{2}+\frac{1}{2T}\sum_{m'=-\infty}^{\infty}(\delta(f-\frac{v+m'}{T})-j\frac{1}{\pi(f-\frac{v+m'}{T})})

这样,我们能够解决前面等比数列求和的问题了:

∫0∞R‾v1(τ)e−j2πfτdτ={e−jπfLT1−ϕI(h)e−j2πfT∫0Tλ(ξ)e−j2πfξdξ,∣ϕI(h)∣<1(e−j2πfLT∑m′=0∞e−j2πT(f−v/T)m′)(∫0∞λ(ξ)e−j2πfξdξ),∣ϕI(h)∣=∣ej2πv∣=1={e−jπfLT1−ϕI(h)e−j2πfT∫0Tλ(ξ)e−j2πfξdξ,∣ϕI(h)∣<1e−j2πfLT(12+12T∑m′=−∞∞(δ(f−v+m′T)−j1π(f−v+m′T)))(∫0∞λ(ξ)e−j2πfξdξ),∣ϕI(h)∣=∣ej2πv∣=1\begin{aligned} &\int_0^{\infty}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau\\ =&\begin{cases} \frac{e^{-j\pi fLT}}{1-\phi_I(h)e^{-j2\pi fT}}\int_{0}^{T}\lambda(\xi)e^{-j2\pi f\xi}{\rm d}\xi,&|\phi_I(h)|<1\\[2ex] (e^{-j2\pi fLT}\sum_{m'=0}^\infty e^{-j2\pi T(f-v/T)m'})(\int_0^\infty\lambda(\xi)e^{-j2\pi f\xi}{\rm d}\xi),&|\phi_I(h)|=|e^{j2\pi v}|=1 \end{cases}\\ =&\begin{cases} \frac{e^{-j\pi fLT}}{1-\phi_I(h)e^{-j2\pi fT}}\int_{0}^{T}\lambda(\xi)e^{-j2\pi f\xi}{\rm d}\xi,&|\phi_I(h)|<1\\[2ex] e^{-j2\pi fLT}(\frac{1}{2}+\frac{1}{2T}\sum_{m'=-\infty}^{\infty}(\delta(f-\frac{v+m'}{T})-j\frac{1}{\pi(f-\frac{v+m'}{T})}))(\int_0^\infty\lambda(\xi)e^{-j2\pi f\xi}{\rm d}\xi),&|\phi_I(h)|=|e^{j2\pi v}|=1 \end{cases} \end{aligned}

现在,对于∣ϕI(h)∣<1|\phi_I(h)|<1 的情况,我们可以计算:

S‾v1(f)=2Re{∫0LTR‾v1(τ)e−j2πfτdτ+11−ϕI(h)e−j2πfT(∫0Tλ(ξ)e−j2πf(ξ+LT)dξ)}\begin{aligned} &\overline{S}_{v1}(f) =&2{\rm Re}\{\int_0^{LT}\overline{R}_{v1}(\tau)e^{-j2\pi f\tau}{\rm d}\tau+\frac{1}{1-\phi_I(h)e^{-j2\pi fT}}(\int_0^T\lambda({\xi})e^{-j2\pi f(\xi+LT)}{\rm d}\xi)\} \end{aligned}

其中对于0≤τ=ξ+mT≤LT0\le\tau=\xi+mT\le LT

R‾v1(τ)=1T∫0T∏k=1−Lm+1[∑n∈SPnej2πhn[q(t+τ−kT)−q(t−kT)]]dt\overline{R}_{v1}(\tau)=\frac{1}{T}\int_{0}^{T}\prod_{k=1-L}^{m+1}[\sum_{n\in\mathcal S}P_ne^{j2\pi hn[q(t+\tau-kT)-q(t-kT)]}]{\rm d}t

而在∣ϕI(h)∣=1|\phi_I(h)|=1 时,在fm′=v+m′Tf_{m'}=\frac{v+m'}{T} 出存在冲激函数。

而如果∣ϕI(h)∣<1|\phi_I(h)|<1,在符号等概率的情况下:

Pn=1MP_n=\frac{1}{M}

特征函数

ϕI(h)=1M∑n=−(M−1)M−1ejπhn=1Msin⁡Mπhsin⁡πh\phi_I(h)=\frac{1}{M}\sum_{n=-(M-1)}^{M-1}e^{j\pi hn}=\frac{1}{M}\frac{\sin M\pi h}{\sin \pi h}

简化平均自相关函数

R‾v1(τ)=12T∫0T∏k=1−Lτ/T1Msin⁡(2πhM[q(t+τ−kT)−q(t−kT)])sin⁡(2πh[q(t+τ−kT)−q(t−kT)])dt\overline{R}_{v1}(\tau)=\frac{1}{2T}\int_0^T\prod_{k=1-L}^{\tau/T}\frac{1}{M}\frac{\sin(2\pi hM[q(t+\tau-kT)-q(t-kT)])}{\sin(2\pi h[q(t+\tau-kT)-q(t-kT)])}{\rm d}t

相应的功率谱密度

Sv1(f)=2[∫0LTR‾v1(τ)cos⁡(2πfτ)dτ+1−ϕI(h)cos⁡(2πfT)1+ϕ12(h)−2ϕI(h)cos⁡(2πfT)∫LT(L+1)TR‾v1(τ)cos⁡(2πfτ)dτ−1−ϕI(h)sin⁡(2πfT)1+ϕ12(h)−2ϕI(h)sin⁡(2πfT)∫LT(L+1)TR‾v1(τ)sin⁡(2πfτ)dτ]S_{v1}(f)=2[\int_0^{LT}\overline{R}_{v1}(\tau)\cos(2\pi f\tau){\rm d}\tau\\+\frac{1-\phi_I(h)\cos(2\pi fT)}{1+\phi_1^2(h)-2\phi_I(h)\cos(2\pi fT)}\int_{LT}^{(L+1)T}\overline{R}_{v1}(\tau)\cos(2\pi f\tau){\rm d}\tau\\-\frac{1-\phi_I(h)\sin(2\pi fT)}{1+\phi_1^2(h)-2\phi_I(h)\sin(2\pi fT)}\int_{LT}^{(L+1)T}\overline{R}_{v1}(\tau)\sin(2\pi f\tau){\rm d}\tau]

说实话上面这个公式真套进去跑数值计算也非常费劲…… 两层积分套在一起实在没办法搞……

# CFPSK 的 PSD

如果考虑到使用方波的情况,线性的q(t)q(t) 会让整个式子变得比较好看。这里直接拿书上的公式:

Sv(f)=T[1M∑n=1MAn2(f)+2M2∑n=1M∑m=1MBnm(f)An(f)Am(f)]An(f)=sin⁡π[fT−12(2n−1−M)h]π[fT−12(2n−1−M)h]Bnm(f)=cos⁡(2πfT−αnm)−ϕI(h)cos⁡αnm1+ϕI2(h)−2ϕIcos⁡(2πfT)αnm=πh(m+n−1−M)S_v(f)=T[\frac{1}{M}\sum_{n=1}^{M}A_n^2(f)+\frac{2}{M^2}\sum_{n=1}^{M}\sum_{m=1}^{M}B_{nm}(f)A_n(f)A_m(f)]\\ A_n(f)=\frac{\sin\pi[fT-\frac{1}{2}(2n-1-M)h]}{\pi[fT-\frac{1}{2}(2n-1-M)h]}\\ B_{nm}(f)=\frac{\cos(2\pi fT-\alpha_{nm})-\phi_I(h)\cos\alpha_{nm}}{1+\phi_I^2(h)-2\phi_I\cos(2\pi fT)}\\ \alpha_{nm}=\pi h(m+n-1-M)

对于M=2M=2 的情况,我们可以得到:

可以注意到,当hh 趋近于 1 时,PSD 中出现了尖峰。在hh 小于 1 时,能量主要集中在频谱中心部分,随着hh 逐渐趋向于 1,频谱有向外产生一个尖峰的趋势。对于hh 大于 1 的情况,PSD 能量主要集中在外侧一般区域中,随着hh 逐渐趋向于 1,频谱有向内的趋势。

为了尽可能减少频谱占用,一般我们还是要把调制指数设置在11 以内。当然,在一些特殊的情况下,也许可以通过大于 1 的调制指数来达到一些特殊的效果。

对于MM 更高的情况,有类似的:

绘制M=4M=4 和M=8M=8,和前面的情况类似。

下面考虑一些特殊情况,我们绘制 MSK 和 OQPSK 的功率谱,能够得到:

可见 MSK 的旁瓣功率下降远快于 OQPSK。

# 附 - 绘图代码

使用RC和REC的PSD和衰减速度
import matplotlib.pyplot as plt
import numpy as np
def sinc(x):
    if x == 0:
        return 1
    return np.sin(np.pi * x) / (np.pi * x)
def s_rec(sigma, A, T, f):
    return pow(sigma, 2) * pow(A, 2) * T * pow(sinc(f * T), 2)
def s_rc(sigma, A, T, f):
    return pow(sigma, 2) * pow(A, 2) * T * pow(sinc(f * T), 2) / (4 * pow((1 - pow(f, 2) * pow(T, 2)),2))
sigma = 1
T = 2
A = 1
x = np.linspace(-10, 10, 10000)
y1 = []
y2 = []
y1_0 = s_rec(sigma, 1, T, 0)
y2_0 = s_rc(sigma, 1, T, 0)
for i in x:
    y1.append(s_rec(sigma, 1, T, i))
    y2.append(s_rc(sigma, 1, T, i))
    
y1 = np.array(y1)
y2 = np.array(y2)
plt.suptitle("$PSD\ of\ RC\ and\ REC\ (A=1, T=2, \sigma=1)$")
ax = plt.subplot(211)
ax.set_title("$PSD\ of\ RC\ and\ REC$")
plt.plot(x, y1, label="REC")
plt.plot(x, y2, label="RC")
plt.legend()
plt.grid(True)
ax.set_xlabel("$f$")
ax.set_ylabel("$PSD$")
ax = plt.subplot(212)
ax.set_title("$Decay\ RC\ and\ REC\ (\log 10)$")
plt.plot(x, np.log10(y1 / y1_0), label="REC")
plt.plot(x, np.log10(y2 / y2_0), label="RC")
plt.legend()
plt.grid(True)
ax.set_xlabel("$f$")
ax.set_ylabel("$\\log_{10}\\frac{\\overline{S}_{v1}(f)}{\\overline{S}_{v1}(0)}$")
plt.show()
M-CPM的PSD谱
import matplotlib.pyplot as plt
import numpy as np
def phi_h(h, M):
    return np.sin(M * h * np.pi) / np.sin(h * np.pi) / M
def alpha(n, m, M, h):
    return np.pi * (m + n - 1 - M) * h
def A(n, f, T, M, h):
    return (np.sin(np.pi * (f * T - 0.5 * (2 * n - 1 - M) * h))) / (
        np.pi * (f * T - 0.5 * (2 * n - 1 - M) * h)
    )
def B(n, m, f, T, M, h):
    return (
        np.cos(2 * np.pi * f * T - alpha(n, m, M, h)) - phi_h(h, M) * np.cos(alpha(n, m, M, h))
    ) / (
        1
        + pow(phi_h(h, M), 2)
        - 2 * phi_h(h, M) * np.cos(2 * np.pi * f * T)
    )
def s_v(f, T, M, h):
    sum_a = 0
    sum_ab = 0
    for n in range(1, M + 1):
        sum_a += pow(A(n, f, T, M, h), 2)
        for m in range(1, M + 1):
            sum_ab += A(n, f, T, M, h) * B(n, m, f, T, M, h) * A(m, f, T, M, h)
    return (sum_a / M + sum_ab * 2 / pow(M, 2)) * T
T = 0.5
M = 2
ax = plt.subplot(221)
for h in [0.5, 0.7, 1.3, 1.5]:
    x = np.linspace(0, 3, 10000)
    y = s_v(x / T, T, 4, h)
    plt.plot(x, y, label="h={}".format(h))
ax.set_title("M = 4")
plt.legend()
plt.grid(True)
plt.xlabel("Normalized Frequency")
plt.ylabel("PSD")
ax = plt.subplot(222)
for h in [0.5, 0.7, 1.3, 1.5]:
    x = np.linspace(0, 5, 10000)
    y = s_v(x / T, T, 8, h)
    plt.plot(x, y, label="h={}".format(h))
ax.set_title("M = 8")
plt.legend()
plt.grid(True)
plt.xlabel("Normalized Frequency")
plt.ylabel("PSD")
ax = plt.subplot(223)
for h in [0.9, 0.95, 1.05, 1.1]:
    x = np.linspace(0, 3, 10000)
    y = s_v(x / T, T, 4, h)
    plt.plot(x, y, label="h={}".format(h))
ax.set_title("M = 4")
plt.legend()
plt.grid(True)
plt.xlabel("Normalized Frequency")
plt.ylabel("PSD")
ax = plt.subplot(224)
for h in [0.95, 0.98, 1.02, 1.05]:
    x = np.linspace(0, 5, 10000)
    y = s_v(x / T, T, 8, h)
    plt.plot(x, y, label="h={}".format(h))
ax.set_title("M = 8")
plt.legend()
plt.grid(True)
plt.xlabel("Normalized Frequency")
plt.ylabel("PSD")
plt.show()
MSK和OQPSK的比较
import matplotlib.pyplot as plt
import numpy as np
def s_v_msk(f, A, T):
    return (16 * pow(A, 2) * T / pow(np.pi, 2)) * pow(
        np.cos(2 * np.pi * f * T) / (1 - 16 * pow(f * T, 2)), 2
    )
def s_v_oqpsk(f, A, T):j
    return pow(A, 2) * T * pow(np.sin(np.pi * f * T) / (np.pi * f * T), 2)
A = 1
T = 0.5
x = np.linspace(0, 10, 10000)
y1 = s_v_msk(x / T, A, T)
y2 = s_v_oqpsk(x / (T / 2), A, T)
plt.plot(x, 10 * np.log10(y1), label="MSK")
plt.plot(x, 10 * np.log10(y2), label="OQPSK")
plt.legend()
plt.grid(True)
plt.xlabel("Normalized Frequency $fT_b$")
plt.ylabel("log(PSD)")
plt.xlim(0, 10)
plt.ylim(-80, 0)
plt.show()