近期在带师弟师妹尝试电域DSP补偿方向,布置了一个任务下去。给了他GSOP算法的程序和测试程序,通过阅读余建军老师的相干光通信神书,尝试将Lowdin算法当作GSOP的改进,把代码写出来。
谨以此文来记录一下如果是我要怎么去解决这样的代码实现问题,尽可能将工作过程详细的记录下来,希望能对师弟师妹有所帮助。
既然我的任务是改进算法,我应该先明确现有算法的问题在哪里。然后再去寻找解决方案。
GSOP算法能够对正交不平衡问题起到很好的补偿效果。假设发送信号为 S I , S Q S_I,S_Q SI,SQ代表IQ两路信号。理想情况下接收到的信号应该是 r I ∝ S I r_I\propto S_I rI∝SI r Q ∝ S Q r_Q\propto S_Q rQ∝SQ但是因为正交不平衡效应,使得I路信号中混入了Q路的信息,Q路信号中混入了I路的信息。(正比于符号是因为经过信道有衰减之类的东西)
如何量化这种现象呢?GSOP算法的观点,使用幅度失配和相位失配来量化正交不平衡现象。即,认为接收到的信号是 r I ∝ S I r_I\propto S_I rI∝SI r Q ∝ α S Q ⋅ e j θ r_Q\propto \alpha S_Q\cdot e^{j\theta} rQ∝αSQ⋅ejθ也就是说,GSOP算法认为,我接收到的信号中,I路信号是正确的,所有的正交不平衡问题都出现在Q路上。 Lowdin算法的改进就是针对这个假设。
GSOP算法对于幅度失配问题的理论补偿范围在 ( − ∞ , + ∞ ) (-\infty,+\infty) (−∞,+∞),对相位失配的补偿范围为 ( − 60 ° , + 60 ° ) (-60\degree,+60\degree) (−60°,+60°)
余老师神书上关于Lowdin算法的讲解就只有一下这丢丢篇幅。我要从中提取出能解决我问题的信息。
开篇就提出了GSOP算法的缺点。并提出了Lowdin算法认为的,接收到的信号模型的样子。但是他只提到了相位失配,没有提及幅度失配。 是在这种模型下,不存在幅度失配吗?我的感觉告诉我不应该。正交不平衡是由于器件的不理想导致的,不可能不理想器件只会让信号旋转,有相位上的失配。器件不理想,导致信号幅度有所偏差不是很正常的事情么?
或者说,其实在Lowdin模型下,幅度的失配,可以转化为相位的失配。因此才只存在相位失配。稍微一想就不可能,你把一条线给我拉长了,你告诉我其实你是通过把这条线转了个角度做到的,胡扯。
工作才刚刚开始,就已经看不懂了…没事,科研常态。现在我遗留了一个问题Q1。继续往下看。
Lowdin算法认为,正交不平衡问题不应该全是Q路信号的锅。所以他把相位失配分配到了IQ两路信号上。 r I = S I c o s θ + S Q s i n θ r_I=S_Icos\theta+S_Qsin\theta rI=SIcosθ+SQsinθ r Q = S Q c o s θ + S I s i n θ r_Q=S_Qcos\theta+S_Isin\theta rQ=SQcosθ+SIsinθ得到一个相关矩阵,还有一个转换矩阵。
但是算这些东西是干嘛,又怎么得到正交补偿之后的信号呢?这些都没有提及。所以我决定去看看参考文献中有没有原理的讲解和公式的推导。
此外因为这个矩阵的名字叫做转换矩阵L,所以我猜,可能输入信号 r I , r Q r_I,r_Q rI,rQ乘上这个矩阵L是不是就得到输出了?
于是我做了如上的验证,果不其然,这个矩阵就是这么用的。而且这个矩阵是个对称矩阵,所以无论是左乘列向量还是右乘行向量得到的结果一样。所以我在还没整明白原理的情况下,先做出了结果。
其实到这,这项工作基本已经完成了,剩下的只是代码实现了。但是现在还没有搞明白这些公式是怎么来的,读论文的工作还是要做一下滴~
然后下载这篇参考文献下来看看呗。 点击all 3 version 还不是免费能下。烦…导出一下他的记录。然后sci-hub大法把论文下下来。一般我还喜欢用SCI的数据出导出记录,SCI数据库不提供下载的话,再用sci-hub下论文。 把导出的记录和下载的论文放到EndNote里管理起来。
不会用数据库,不会用Google学术的童鞋,请看0202年了,怎么还这么多人不会搜索 文献检索——Web of Science
拿到论文之后,看到关键词。我觉得这些关键词就已经足够从网上搜到一些代码了,只要能嫖到,坚决不自己写!!(代码的事,下一节再说) 此外也通过这些关键词google了一下有没有对个算法的呆瓜式讲解。然后找到了一个两年前也在做我现在这件事的网友如何做Lowdin算法
Lowdin正交化算法起源自量子化学中的一个问题。采用这种方法所得的正交化信号,在最小二乘意义上,最接近于原始的信号。
我有一个不正交的集合 { φ i } \{\varphi_i\} {φi},它有重叠矩阵(量子力学中的一个概念)S, S i j = < φ i ∣ φ j > S_{ij}=\left<\varphi_i|\varphi_j \right> Sij=⟨φi∣φj⟩,就是个很多内积组成的矩阵嘛。
我想找到一个集合 { ψ i } \{\psi_i\} {ψi},它里面的元素是正交的。其实对于我们这个背景来说,元素只有两个,I路信号和Q路信号。
因为这两个集合张成的空间相同,所以可以互相线性表出(需要点点矩阵论的基础,没有也没关系,就是为了说明下面这个式子出现的合理性)。 ψ i = ∑ k C k i φ k \psi_i=\sum_k{C_{ki}\varphi_k} ψi=k∑Ckiφk由于集合 { ψ i } \{\psi_i\} {ψi}是正交的,所以它的重叠矩阵一定是个单位阵。
然后把上式带进 { ψ i } \{\psi_i\} {ψi}的重叠矩阵计算中。得到 < ψ i ∣ ψ j > = ∑ k , l C k l ∗ S k l C l j = δ i j \left< \psi_i|\psi_j\right>=\sum_{k,l}C_{kl}^*S_{kl}C_{lj}=\delta_{ij} ⟨ψi∣ψj⟩=k,l∑Ckl∗SklClj=δij写成矩阵的形式就得到 C † S C = I C^\dagger SC=I C†SC=I其中 C C C称为展开系数矩阵, C † C^\dagger C†称为 C C C的Hermitian adjoint。这个式子被称为正交条件。
所以只要求出了C,那就得到了由不正交集合 { φ i } \{\varphi_i\} {φi}变为正交集合 { ψ i } \{\psi_i\} {ψi}的途径。
此外,Lowdin算法还希望 { φ i } \{\varphi_i\} {φi}与 { ψ i } \{\psi_i\} {ψi}能在最小二乘意义上,尽可能的接近。也就是说,符合上述正交条件的C不止一个,我要找到差距最小的那一个。
论文中通过一系列看不太懂的数学推导,得到了结论 C = S − 1 / 2 C=S^{-1/2} C=S−1/2需要保证C是Hermitian矩阵。 Hermitian矩阵:方阵 A = A ′ A=A' A=A′共轭转置,该方阵为Hermitian矩阵。
我搜代码的地方(如果您有其他的优秀途径一定要留言教给我呀)
GitHubpudnmathworksgoogle一顿检索之后,拿到了一堆乱七八糟的东西,大概的读了读,有的在算特征值特征向量,有的在算转换矩阵。虽然他们都符合论文中的讲解,但是和我要实现的东西不打对口,最后没办法,既然嫖不到,就只能自己写了。
公式很简单,就几行代码。注意一下归一化就好了。
至于最开始的那个问题,只有相位失配没有幅度失配的问题。我觉得如果相位纠正了,幅度没有纠正,也就只是个方形星座点变成矩形星座点的问题。
我要写个测试函数验证一下,就先写到这里吧。