深入浅出基函数扩展模型(Basis expansion models , BEM)_BEM模型

通信信道的完整数学描述是想当复杂的,而维数低、阶数低的精简LTV信道模型被提出并且证明了这不影响有效模拟信道传输情况从而使得精简LTV信道模型在许多应用是非常有用的。为了简单起见,考虑精简的LTV信道离散时间模型,其I/O关系为

\[r[n]=\sum\limits_{m=0}^{M-1}{h[n,m]s[n-m]}\]

基于上述CE-BEM模型的考虑,为了更好地信道估计和模型分析,将上述定义重新从矩阵方式定义。考虑只有多条时延径但是其离散时延值都为\[m\]、只有一个多普勒频移问题的信道\[\mathbf{H}\]可以描述为
\[\mathbf{H}={{\mathbf{F}}_{d}}{{\left( {{h}_{m}}{{\mathbf{D}}^{m}} \right)}^{T}}\]                     (3-2-5)
其中\[{{h}_{m}}\]是衰落系数,其数值\[\left| {{h}_{m}} \right|<1\],\[{{\mathbf{F}}_{d}}\]定义为频偏矩阵,\[{{f}_{d}}\]为频偏数。\[\mathbf{D}\]是以第一行元素为\[[0,1,0,\cdots ,0]\]的循环矩阵,将\[\mathbf{D}\]简单记为\[\mathbf{D}\text{=}circ(0,1,0,\cdots ,0)\]。循环矩阵描述了收发信号的循环前缀的加载与移除过程。
\[{{\mathbf{F}}_{d}}\text{=}diag([{{e}^{j2\pi {{f}_{d}}\frac{0}{N}}},{{e}^{j2\pi {{f}_{d}}\frac{1}{N}}},\cdots ,{{e}^{j2\pi {{f}_{d}}\frac{N-1}{N}}}])\]             (3-2-6)
\[\mathbf{D}=\left[ \begin{matrix}
   0 & 1 & 0 & \cdots  & 0  \\
   0 & 0 & 1 & \cdots  & \vdots   \\
   \vdots  & 0 & 0 & \cdots  & 0  \\
   0 & \vdots  & 0 & \ddots  & 1  \\
   1 & 0 & \vdots  & \cdots  & 0  \\
\end{matrix} \right]\]                 (3-2-7)
更进一步地,考虑只有多条时延径但是其离散时延值都为\[m\]、有多个多普勒频移问题的信道\[\mathbf{H}\]可以描述为
\[\mathbf{H}=\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}{{\left( {{h}_{m,d}}{{\mathbf{D}}^{m}} \right)}^{T}}}\]                   (3-2-8)
其中\[{{f}_{d}}\]是一组离散频偏基,基的总个数\[D\]根据实际信道自定义,它一定程度上决定了CE-BEM模型与实际信道相比的精准程度。此外,\[{{h}_{m,d}}\]描述了 多条时延径但是其离散时延值都为\[m\]且多普勒频移为\[{{f}_{d}}\]情况下的信道冲击响应。 于是考虑所有时延经的总信道\[\mathbf{H}\]可以描述为
\[\mathbf{H}=\sum\limits_{m=0}^{M-1}{\left( \sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}{{\left( {{h}_{m,d}}{{\mathbf{D}}^{m}} \right)}^{T}}} \right)}\text{=}\sum\limits_{m=0}^{M-1}{\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}{{\left( {{h}_{m,d}}{{\mathbf{D}}^{m}} \right)}^{T}}}}\]      (3-2-9)
其中\[M\]为最大时延径。令
\[h[n,m]\text{=}\sum\limits_{d=0}^{D-1}{{{h}_{m,d}}{{e}^{j2\pi {{f}_{d}}\frac{n}{N}}}}\]                  (3-2-10)
记一组测频基为\[{{\mathbf{f}}_{v}}={{[{{f}_{0}},{{f}_{1}},{{f}_{2}},\cdots ,{{f}_{D-1}}]}^{T}},{{f}_{d}}\in {{\mathbf{f}}_{v}}\],\[{{\mathbf{f}}_{v}}\]均为已知参量,其是根据信道的最大可能的多普勒频移均匀分布的一组测频基。那么信道矩阵\[\mathbf{H}\]可以写成
\[\mathbf{H}=\left[ \begin{matrix}
   h[0,0] & 0 & 0 & \cdots  & h[0,2] & h[0,1]  \\
   h[1,1] & h[1,0] & 0 & \cdots  & h[1,3] & h[1,2]  \\
   h[2,2] & h[2,1] & \ddots  & \ddots  & \vdots  & h[2,3]  \\
   \vdots  & h[3,2] & \vdots  & \ddots  & 0 & \vdots   \\
   0 & \vdots  & \vdots  & \vdots  & \ddots  & 0  \\
   \vdots  & 0 & \vdots  & \vdots  & h[N,1] & h[N,0]  \\
\end{matrix} \right]\]  (3-2-11)
或者
\[\mathbf{H}\text{=}\sum\limits_{m=0}^{M-1}{\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}{{\left( {{h}_{m,d}}{{\mathbf{D}}^{m}} \right)}^{T}}}}=\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}{{\mathbf{C}}_{d}}}\]            (3-2-12)
其中\[{{\mathbf{C}}_{d}}=circ{{([{{h}_{0,d}},{{h}_{1,d}},{{h}_{2,d}},\cdots ,{{h}_{M-1,d}},0,\cdots ,0])}^{T}}\triangleq circ{{(\mathbf{h}_{d}^{T})}^{T}}\],为了更好地推导出信道估计模型以及均衡模型,假设发射收发均已知的信号\[\mathbf{s}\],那么通信过程可以建模为\[\mathbf{r=Hs+w}\],也就是
\[\mathbf{r=Hs+w}\text{=}\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}{{\mathbf{C}}_{d}}}\mathbf{s+w}\]                (3-2-13)
记\[\mathbf{S}_{\mathbf{s}}^{Toe}=circ{{({{\mathbf{s}}^{T}})}^{T}}\],\[\mathbf{R}_{\mathbf{r}}^{Toe}=circ{{({{\mathbf{r}}^{T}})}^{T}}\],\[\mathbf{W}_{\mathbf{w}}^{Toe}=circ{{({{\mathbf{w}}^{T}})}^{T}}\]那么根据(3-1-13)有
\[\mathbf{R}_{\mathbf{r}}^{Toe}\mathbf{=}\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}{{\mathbf{C}}_{d}}\mathbf{S}_{\mathbf{s}}^{Toe}}\mathbf{+W}_{\mathbf{w}}^{Toe}\]               (3-2-14)
由于\[{{\mathbf{F}}_{d}}\]、\[{{\mathbf{C}}_{d}}\]、\[\mathbf{S}_{\mathbf{s}}^{Toe}\]均是循环矩阵,进一步地有
\[\mathbf{R}_{\mathbf{r}}^{Toe}\mathbf{=}\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}\mathbf{S}_{\mathbf{s}}^{Toe}{{\mathbf{C}}_{d}}}\mathbf{+W}_{\mathbf{w}}^{Toe}\]               (3-2-15)
因此只取\[\mathbf{R}_{\mathbf{r}}^{Toe}\]、\[{{\mathbf{C}}_{d}}\]的第一列就有 
 \[\mathbf{r=}\sum\limits_{d=0}^{D-1}{{{\mathbf{F}}_{d}}\mathbf{S}_{\mathbf{s}}^{Toe}{{\mathbf{h}}_{d}}}\mathbf{+w}\triangleq \mathbf{Ac+w}\]               (3-2-16)
其中\[\mathbf{A}\triangleq \left[ \begin{matrix}
   {{\mathbf{F}}_{0}}\mathbf{S}_{\mathbf{s}}^{Toe} & {{\mathbf{F}}_{1}}\mathbf{S}_{\mathbf{s}}^{Toe} & \cdots  & {{\mathbf{F}}_{D-1}}\mathbf{S}_{\mathbf{s}}^{Toe}  \\
\end{matrix} \right]\],以及\[\mathbf{c}\triangleq {{[\mathbf{h}_{0}^{T},\mathbf{h}_{1}^{T},\mathbf{h}_{2}^{T},\cdots ,\mathbf{h}_{D-1}^{T}]}^{T}}\]。到这里,可以知道,矩阵\[\mathbf{A}\]的大小为\[N\times ND\],同时矩阵\[\mathbf{A}\]是已知的。对于接收机而言,接收信号\[\mathbf{r}\]也是已知信号,整个信道估计问题归结为求解系数矩阵\[\mathbf{c}\]的问题。
而\[\mathbf{c}\]作为一个列向量,每一列中只有前M位置有数据,其他为零。这为\[\mathbf{r=Ac}\]的简化计算以及\[\mathbf{A}\]矩阵的裁剪提供了可能性。根据\[\mathbf{c}\]向量的特性可以知道,仅当\[N\ge MD\]时方程有唯一解,这是显然的。根据\[\mathbf{c}\]的稀疏性以及矩阵相乘的定义,对\[\mathbf{A}\]矩阵进行裁剪:取M列,舍弃N列,再取M列,舍弃N列……只到取尽。得到新矩阵\[{{\mathbf{A}}_{0}}\]。我们将这样的算子定义为\[\mathbf{Y}\]矩阵,\[\mathbf{Y}\]矩阵的数学表达式为
\[\mathbf{Y}={{\mathbf{E}}_{D}}\otimes [\begin{matrix}
   {{\mathbf{E}}_{M}}  \\
   {{\mathbf{0}}_{(N-M)\times M}}  \\
\end{matrix}]\]                      (3-2-17)
其中\[{{\mathbf{E}}_{D}}\]大小为\[D\times D\]的单位阵,\[{{\mathbf{E}}_{M}}\]为大小为\[M\times M\]的单位阵。 \[{{\mathbf{0}}_{(N-M)\times M}}\]为\[(N-M)\]行,\[M\]列的全零矩阵。值得再次指出的是,本节中的\[M\]为假设的、信道的最大可能的多径个数;\[D\]为假设的、信道中最大可能的多普勒个数;于是有
\[{{\mathbf{A}}_{0}}=\mathbf{AY}\]                         (3-2-18)
由于\[{{\mathbf{C}}_{d}}=circ{{([{{h}_{0,d}},{{h}_{1,d}},{{h}_{2,d}},\cdots ,{{h}_{M-1,d}},0,\cdots ,0])}^{T}}\triangleq circ{{(\mathbf{h}_{d}^{T})}^{T}}\]以及\[\mathbf{c}\triangleq {{[\mathbf{h}_{0}^{T},\mathbf{h}_{1}^{T},\mathbf{h}_{2}^{T},\cdots ,\mathbf{h}_{D-1}^{T}]}^{T}}\]的稀疏性,将有实际参数的部分记为\[{{\mathbf{c}}_{0}}\triangleq {{[\mathbf{h}_{00}^{T},\mathbf{h}_{10}^{T},\mathbf{h}_{20}^{T},\cdots ,\mathbf{h}_{D-10}^{T}]}^{T}}\],以及\[{{\mathbf{h}}_{d,0}}\triangleq [{{h}_{0,d}},{{h}_{1,d}},\cdots ,{{h}_{M-1,d}}]\] 
于是\[\mathbf{r=Ac+w}\]的参数估计问题转换为\[\mathbf{r=}{{\mathbf{A}}_{0}}{{\mathbf{c}}_{0}}\mathbf{+w}\]的参数估计问题。
最后,在本小节中,一个值得注意的点在于3.2.1节中的所有数学模型是基于发射信号存在循环前缀(CP)的基础上考虑的!对于没有CP的系统,上述所有关于循环矩阵的推论在时延大于一个时延单位的情况下是不成立的。而对于本文所提出的MMCM系统,由于存在一定的扩频增益,当实际信道的时延小于时带宽积P时,非采样级的数据传输信道\[{{\mathbf{H}}_{d}}=\mathbf{C}_{j}^{H}\mathbf{H}{{\mathbf{C}}_{j}}\]实际上是一个对角阵。在后续硬件研究以及实现中,不对发射信号添加循环前缀,但发射信号一直在不断地循环发射,这使得通信信道具有循环矩阵的特性。综上,上述信道模型成立的前提条件:实际信道的时延小于时带宽积P与循环前缀长度(可以为0)之和。
§3.2.2 基于BEM的均衡技术
为了估计出\[{{\mathbf{c}}_{0}}\] (记\[{{\mathbf{c}}_{0}}\]的估计值为\[{{\mathbf{\hat{c}}}_{0}}\])可以使用最小二乘估计(LS)等方法。
定义线性估计器\[\mathbf{F}\],\[\mathbf{F}\]使得\[{{\mathbf{\hat{c}}}_{0}}=\mathbf{Fr}\]成立,对于最小二乘估计法有
\[\mathbf{F}={{(\mathbf{A}_{0}^{H}{{\mathbf{A}}_{0}})}^{-1}}\mathbf{A}_{0}^{H}\]                      (3-2-19)
式中,\[\mathbf{F}\]的大小为\[N\times N\],这是一个大型矩阵,可以在构建实际通信系统前使用超级计算机计算出相应数值,离线载入通信系统中即可。求得\[{{\mathbf{\hat{c}}}_{0}}\]后可以根据(3-2-12~3-2-18)反推回信道矩阵\[\mathbf{H}\]的估计值。那么信道\[\mathbf{H}\]即可求得。下面对信号进行均衡。假设发射信号\[\mathbf{s}\]在接收端的估计值为\[\mathbf{\hat{s}}\]。假设线性估计器为\[\mathbf{\bar{E}}\],\[\mathbf{\bar{E}}\]使得\[\mathbf{\hat{s}}\text{=}\mathbf{\bar{E}r}\]
\[{{\mathbf{\bar{E}}}_{ZF}}={{({{\mathbf{H}}^{H}}\mathbf{H})}^{-1}}{{\mathbf{H}}^{H}}\]                     (3-2-21)
\[{{\mathbf{\bar{E}}}_{MMSE}}={{({{\mathbf{H}}^{H}}\mathbf{H}+\frac{\sigma _{{\mathbf{\tilde{w}}}}^{2}}{\sigma _{\mathbf{s}}^{2}}\mathbf{H})}^{-1}}{{\mathbf{H}}^{H}}\]                 (3-2-22)
其中\[\sigma _{{\mathbf{\tilde{w}}}}^{2}/\sigma _{\mathbf{s}}^{2}={{10}^{-SNR/10}}\]为噪声功率与信号功率之比,SNR为信噪比,单位为dB。上述过程可以称之为信道均衡过程。由于校正过程中校正的是采样时刻的时域波形,要求满足的是无码间串扰的时域条件,因此上述方法归为时域均衡的一种。



参考文献:

1. 窦高奇《快时变信道下的无线通信》

2. Giannakis G B, Tepedelenlioglu C. Basis expansion models and diversity techniques for blind identification and equalization of time-varying channels[J]. Proceedings of the IEEE, 1998, 86(10):1969-1986.

当然,我可以为您提供一个于resnet18模型的代码,使用mish函数代替relu函数。以下是代码: ```python import torch.nn as nn import torch.nn.functional as F class Mish(nn.Module): def __init__(self): super(Mish, self).__init__() def forward(self, x): return x * torch.tanh(F.softplus(x)) class BasicBlock(nn.Module): expansion = 1 def __init__(self, in_planes, planes, stride=1): super(BasicBlock, self).__init__() self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=3, stride=stride, padding=1, bias=False) self.bn1 = nn.BatchNorm2d(planes) self.mish = Mish() self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=1, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(planes) self.shortcut = nn.Sequential() if stride != 1 or in_planes != self.expansion*planes: self.shortcut = nn.Sequential( nn.Conv2d(in_planes, self.expansion*planes, kernel_size=1, stride=stride, bias=False), nn.BatchNorm2d(self.expansion*planes) ) def forward(self, x): out = self.mish(self.bn1(self.conv1(x))) out = self.bn2(self.conv2(out)) out += self.shortcut(x) out = self.mish(out) return out class ResNet18(nn.Module): def __init__(self, num_classes=10): super(ResNet18, self).__init__() self.in_planes = 64 self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1, bias=False) self.bn1 = nn.BatchNorm2d(64) self.mish = Mish() self.layer1 = self._make_layer(64, 2, stride=1) self.layer2 = self._make_layer(128, 2, stride=2) self.layer3 = self._make_layer(256, 2, stride=2) self.layer4 = self._make_layer(512, 2, stride=2) self.linear = nn.Linear(512*BasicBlock.expansion, num_classes) def _make_layer(self, planes, num_blocks, stride): strides = [stride] + [1]*(num_blocks-1) layers = [] for stride in strides: layers.append(BasicBlock(self.in_planes, planes, stride)) self.in_planes = planes * BasicBlock.expansion return nn.Sequential(*layers) def forward(self, x): out = self.mish(self.bn1(self.conv1(x))) out = self.layer1(out) out = self.layer2(out) out = self.layer3(out) out = self.layer4(out) out = F.avg_pool2d(out, 4) out = out.view(out.size(0), -1) out = self.linear(out) return out ``` 在这个示例中,我们定义了一个Mish类,以替换在本块中使用的ReLU函数。我们还定义了ResNet18类,其中包含四个本块及其初始化和前向传递函数。在第一个本块中采用Mish激活函数代替ReLU激活函数。这使得整个模型使用Mish函数作为其激活函数
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值