经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题「建议收藏」

经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题「建议收藏」前言本文是博主对于Zhi-quanLuo老师的经典著作《SemidefiniteRelaxationofQuadraticOptimizationProblems》的读书笔记,希望可作为对全文以中文形式的核心梳理。单刀直入首先,SemidefiniteRelaxation(SDR)适用的问题可以写为如下形式:min⁡x∈Rn    xTCx s.t. xTAix⊵ibi,i=1,…,m(1)\begin{aligned}\min_{x\in

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

前言

本文是博主对于 Zhi-quan Luo 老师的经典著作 《Semidefinite Relaxation of Quadratic Optimization Problems》 的读书笔记,希望可作为对全文以中文形式的核心梳理。

单刀直入

首先, Semidefinite Relaxation (SDR) 适用的问题可以写为如下形式:

min ⁡ x ∈ R n      x T C x  s.t.  x T A i x ⊵ i b i , i = 1 , … , m (1) \begin{aligned} \min _{x \in \mathbb{R}^{n}} & \;\;x^{T} C x \\ \text { s.t. } & x^{T} A_{i} x \unrhd_{i} b_{i}, \quad i=1, \ldots, m \end{aligned}\tag{1} xRnmin s.t. xTCxxTAixibi,i=1,,m(1)

有几个注意点:

  • 暂时定义在实数域上, 但复数域有类似的结论。
  • ⊵ i \unrhd_{i} i 表示 ≥ \ge , ≤ \le , = = = 的 其中之一。也就是说, 只要限制条件是二次约束即可。
  • C C C A i A_i Ai 都是对称矩阵。 即, C , A 1 , … , A m ∈ S n C, A_{1}, \ldots, A_{m} \in \mathbb{S}^{n} C,A1,,AmSn

显然, 目标函数和限制条件中都有两个 x x x, 因此这类问题也被称为 二次约束二次规划 (quadratically
constrained quadratic programs, QCQP)
问题。 需要注意的是, 这并不是一个凸问题。 因为 x T A i x > 0 x^{T} A_{i} x>0 xTAix>0 x T A i x = 0 x^{T} A_{i} x=0 xTAix=0 都并非一个凸集。

而SDR方法的目的就是将问题转化为一个凸问题从而求解。

我们引入一个新的变量 X = x x T X = xx^T X=xxT, 并以此为优化变量, 那么问题(1)可以被写为:
min ⁡ X ∈ S n Tr ⁡ ( C X )  s.t.  Tr ⁡ ( A i X ) ⊵ i b i , i = 1 , … , m , X ⪰ 0 , rank ⁡ ( X ) = 1 (2) \begin{aligned} \min _{X \in \mathbb{S}^{n}} & \operatorname{Tr}(C X) \\ \text { s.t. } & \operatorname{Tr}\left(A_{i} X\right)\unrhd_{i} b_{i}, \quad i=1, \ldots, m, \\ & X \succeq 0, \operatorname{rank}(X)=1 \end{aligned}\tag{2} XSnmin s.t. Tr(CX)Tr(AiX)ibi,i=1,,m,X0,rank(X)=1(2)
详细解释一下这一步的转化:

  • 注意到 (1) 的 目标函数 x T C x x^TCx xTCx显然是一个标量。 而标量可以看成一个 1 × 1 1\times 1 1×1的矩阵, 且迹等于本身。 即 t r ( x T C x ) = x T C x \mathrm{tr}(x^TCx)=x^TCx tr(xTCx)=xTCx。 而根据迹的性质, 有 t r ( A B ) = t r ( B A ) \mathrm{tr}(AB) = \mathrm{tr}(BA) tr(AB)=tr(BA)。 也就是说, t r ( x T C x ) = t r ( C x x T ) = t r ( C X ) \mathrm{tr}(x^TCx)=\mathrm{tr}(Cxx^T)=\mathrm{tr}(CX) tr(xTCx)=tr(CxxT)=tr(CX)。 这也就变成了 (2)中的目标函数。 那么 (2) 中的限制条件,也就可以根据相同的变换轻易得到。
  • 相比于(1), (2)中多了两个限制条件, 这是由于 X = x x T X = xx^T X=xxT 引入的。 显然 rank ⁡ ( X ) = 1 \operatorname{rank}(X)=1 rank(X)=1, 因为 X X X的所有列都线性相关。 也因此,只有一个特征值等于 x T x x^Tx xTx,显然是大于0的,所以肯定是半正定矩阵。

这一步转化的意义在哪呢?

事实上, 除了 rank ⁡ ( X ) = 1 \operatorname{rank}(X)=1 rank(X)=1 这个限制以外, 整个问题是一个凸问题。 由于迹函数是个仿射变换, 很容易证明其凸性。 而半正定约束也显然是个凸集, 因为两个半正定矩阵的和一定也是一个半正定矩阵。

因此, 工程上很自然的想法就是, **暂时得忽略 该约束 rank ⁡ ( X ) = 1 \operatorname{rank}(X)=1 rank(X)=1, 并通过凸优化方法 (事实上以CVX工具包为代表的内点法数值算法)来求解出一个解 X X X. 这一步大家百度下CVX的使用就可以了,没有任何障碍。

而问题的关键点在于,始终我们问题需要得到的是 x x x,而非 X X X。 如果通过凸优化求出的 X X X刚好就是一个 rank ⁡ ( X ) = 1 \operatorname{rank}(X)=1 rank(X)=1的矩阵,那么 x x x可以直接得到(对X做个SVD或EVD啥的都可以)。 但更多时候, X X X没有道理是一个 rank ⁡ ( X ) = 1 \operatorname{rank}(X)=1 rank(X)=1的矩阵。 也就是说, 根本不存在一个 x x x, 使得 X = x x T X=xx^T X=xxT

工程实现

那么SDR要解决的另一个问题就是如何从 X X X中恢复出一个满足原问题约束的 x x x
出于工程实现角度的思路其实非常清晰, 我们可以直接求解下面的问题以获得 x x x
min ⁡ x      ∥ X − x x T ∥ F 2 (3) \min_x \;\; \|X-xx^T\|_F^2\tag{3} xminXxxTF2(3)
即找一个最接近 X X X x x T xx^T xxT。 这个问题很经典了,而他的闭式解就是, x x x X X X的最大特征向量乘以最大特征值的平方根。 即, 将 X X X的特征值分解表示为:
X ⋆ = ∑ i = 1 r λ i q i q i T X^{\star}=\sum_{i=1}^{r} \lambda_{i} q_{i} q_{i}^{T} X=i=1rλiqiqiT
其中 λ i \lambda_i λi q i q_i qi,代表第 i i i大的特征值和对应的特征向量。 那么(3)的最优解 x x x就是 x ~ = λ 1 q 1 \tilde{x}=\sqrt{\lambda_{1} }q_1 x~=λ1
q1

但是,问题又出现了! 虽然 X X X满足了(2)中的所有的约束, 但由于在这一步中,(3)中求得的 x x x是一个近似的结果。 此时得到的 x x x,不一定满足原问题(1)中的约束了! 也就是说, 经过一顿转化之后, 求得的 x x x并不是原问题的可行解!此时怎么办呢? 解决方案也非常符合工程思维:直接从 x x x出发找一个离 x x x最近的可行解, 这就是SDR的最终结果。

最后提两点:

  • 直接从 x x x出发找一个离 x x x最近的可行解, 这本身就是一个独立的问题, 具体问题具体分析,后面会给一个具体的例子。
  • 毫无疑问,在SDR中有许许多多的近似,工程处理。 因此, SDR的解远非全局最优解。

具体实例

为节约篇幅, 本文只讲一个例子。 也不是论文中给出的, 而是HBF混合波束成形的经典论文 《Alternating Minimization Algorithms for Hybrid Precoding in Millimeter Wave MIMO Systems》中的 一个使用。 有兴趣的读者也可以去看 SDR论文的原文, 接触更多的例子。

以HBF为例, 作者将问题转化为了如下的形式, 熟悉HBF的读者应该很亲切了:

minimize ⁡ F B B ∥ F o p t − F R F F B B ∥ F 2  subject to  ∥ F B B ∥ F 2 = N R F t N s N t (4) \begin{array}{ll} \underset{\mathbf{F}_{\mathrm{BB}}}{\operatorname{minimize}} & \left\|\mathbf{F}_{\mathrm{opt}}-\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right\|_{F}^{2} \\ \text { subject to } & \left\|\mathbf{F}_{\mathrm{BB}}\right\|_{F}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \end{array}\tag{4} FBBminimize subject to FoptFRFFBBF2FBBF2=NtNRFtNs(4)

作者使用了 SDR作为一种算法来求解该问题。 那么首先, 为什么会选用 SDR呢? 因为可以看到, 目标函数和限制条件都是二次形式, 这就是我们之前说到的SDR目标问题:QCQP问题。 接下来,通过这个例子展示如果实战使用SDR。

首先, 刚刚介绍SDR时都是向量形式的变量 x x x, 而(4)中都是矩阵,不利于处理, 因此第一步先进行列化:
∥ F o p t − F R F F B B ∥ F 2 = ∥ vec ⁡ ( F o p t − F R F F B B ) ∥ 2 2 = ∥ vec ⁡ ( F o p t ) − vec ⁡ ( F R F F B B ) ∥ 2 2 = ∥ vec ⁡ ( F o p t ) − ( I N s ⊗ F R F ) vec ⁡ ( F B B ) ∥ 2 2 . \begin{aligned} \left\|\mathbf{F}_{\mathrm{opt}}-\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right\|_{F}^{2} &=\left\|\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}-\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right)\right\|_{2}^{2} \\ &=\left\|\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}\right)-\operatorname{vec}\left(\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right)\right\|_{2}^{2} \\ &=\left\|\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}\right)-\left(\mathbf{I}_{N_{s}} \otimes \mathbf{F}_{\mathrm{RF}}\right) \operatorname{vec}\left(\mathbf{F}_{\mathrm{BB}}\right)\right\|_{2}^{2} . \end{aligned} FoptFRFFBBF2=vec(FoptFRFFBB)22=vec(Fopt)vec(FRFFBB)22=vec(Fopt)(INsFRF)vec(FBB)22.
进行变量代换后 ( f = vec ⁡ ( F o p t ) \mathbf{f}=\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}\right) f=vec(Fopt), b = vec ⁡ ( F B B ) \mathbf{b}=\operatorname{vec}\left(\mathbf{F}_{\mathrm{BB}}\right) b=vec(FBB) and E = I N s ⊗ F R F . \mathbf{E}=\mathbf{I}_{N_{s}} \otimes \mathbf{F}_{\mathrm{RF}} . E=INsFRF.,原问题可写为:

minimize ⁡ b ∥ t f − E b ∥ 2 2  subject to  { ∥ b ∥ 2 2 = N R F t N s N t t 2 = 1 (5) \begin{aligned} &\underset{\mathbf{b}}{\operatorname{minimize}} \quad\|t \mathbf{f}-\mathbf{E b}\|_{2}^{2} \\ &\text { subject to } & \left\{\begin{array}{l} \|\mathbf{b}\|_{2}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \\ t^{2}=1 \end{array}\right. \end{aligned}\tag{5} bminimizetfEb22 subject to {
b22=NtNRFtNst2=1
(5)

**这里必须强调的一点是, 作者引入了 t t t这样一个辅助变量。这是SDR的常见技巧之一!**接下来阐释这个 t t t的作用。

  • 首先, 对于原问题的影响上:以(5)求解之后, 如果得到 t = 1 t=1 t=1, 那么 f \mathbf{f} f就是(4)的最优解。 而如果 t = − 1 t=-1 t=1, 那么 f \mathbf{f} f就是(4)的最优解的相反数, 仍等效于得到了最优解。
  • 其次, 加入这个 t t t辅助变量后, 可以更好地将(5)写成SDR的标准形式。 继续看:

目标函数可以写为:

∥ t f − E b ∥ 2 2 = [ b H t ] [ E H E − E H f − f H E f H f ] [ b t ] \|t \mathbf{f}-\mathbf{E b}\|_{2}^{2}=\left[\begin{array}{ll} \mathbf{b}^{H} & t \end{array}\right]\left[\begin{array}{cc} \mathbf{E}^{H} \mathbf{E} & -\mathbf{E}^{H} \mathbf{f} \\ -\mathbf{f}^{H} \mathbf{E} & \mathbf{f}^{H} \mathbf{f} \end{array}\right]\left[\begin{array}{l} \mathbf{b} \\ t \end{array}\right] tfEb22=[bHt][EHEfHEEHffHf][bt]
注意到: 此时令 y = [ b t ] \mathbf{y}=\left[\begin{array}{l}\mathbf{b} \\ t\end{array}\right] y=[bt], C = [ E H E − E H f − f H E f H f ] \mathbf{C}=\left[\begin{array}{cc}\mathbf{E}^{H} \mathbf{E} & -\mathbf{E}^{H} \mathbf{f} \\ -\mathbf{f}^{H} \mathbf{E} & \mathbf{f}^{H} \mathbf{f}\end{array}\right] C=[EHEfHEEHffHf], 上式就等于 y H C y \mathbf{y}^H\mathbf{C}\mathbf{y} yHCy,而 C \mathbf{C} C是个显然的半正定矩阵: C = [ E , − f ] H [ E , − f ] \mathbf{C}=[\mathbf{E}, -\mathbf{f}]^H[\mathbf{E}, -\mathbf{f}] C=[E,f]H[E,f],一个矩阵的共轭转置乘以本身肯定是半正定矩阵(可从特征值角度得证)。

那么(5)中的另外两个约束又可以转换为:
∥ b ∥ 2 2 = [ b H t ] [ I N R F t N s 0 0 0 ] [ b t ] = N R F t N s N t t 2 = [ b H t ] [ 0 N R F t N s 0 0 1 ] [ b t ] = 1 \begin{aligned}\|\mathbf{b}\|_{2}^{2} &=\left[\begin{array}{ll}\mathbf{b}^{H} & t\end{array}\right]\left[\begin{array}{cc}\mathbf{I}_{N_{\mathrm{RF}}^{t}} N_{s} & 0 \\ \mathbf{0} & 0\end{array}\right]\left[\begin{array}{c}\mathbf{b} \\ t\end{array}\right]=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \\ t^{2} &=\left[\begin{array}{ll}\mathbf{b}^{H} & t\end{array}\right]\left[\begin{array}{cc}0_{N_{\mathrm{RF}}^{t}} N_{s} & 0 \\ 0 & 1\end{array}\right]\left[\begin{array}{l}\mathbf{b} \\ t\end{array}\right]=1 \end{aligned} b22t2=[bHt][INRFtNs000][bt]=NtNRFtNs=[bHt][0NRFtNs001][bt]=1

大家可以细致体会下, 为什么SDR可以应用广泛的原因, 因为大部分二次约束都可以通过稍加构造就写成QCQP的形式。

那么,最后经过一步变量代换:
y = [ b t ] , Y = y y H , C = [ E H E − E H f − f H E f H f ] A 1 = [ I N R F t N s 0 0 0 ] , A 2 = [ 0 N R F t N s 0 0 1 ] \begin{aligned} &\mathbf{y}=\left[\begin{array}{c} \mathbf{b} \\ t \end{array}\right], \mathbf{Y}=\mathbf{y} \mathbf{y}^{H}, \mathbf{C}=\left[\begin{array}{cc} \mathbf{E}^{H} \mathbf{E} & -\mathbf{E}^{H} \mathbf{f} \\ -\mathbf{f}^{H} \mathbf{E} & \mathbf{f}^{H} \mathbf{f} \end{array}\right] \\ &\mathbf{A}_{1}=\left[\begin{array}{cc} \mathbf{I}_{N_{\mathrm{RF}}^{t} N_{s}} & 0 \\ \mathbf{0} & 0 \end{array}\right], \mathbf{A}_{2}=\left[\begin{array}{cc} \mathbf{0}_{N_{\mathrm{RF}}^{t}} N_{s} & 0 \\ \mathbf{0} & 1 \end{array}\right] \end{aligned} y=[bt],Y=yyH,C=[EHEfHEEHffHf]A1=[INRFtNs000],A2=[0NRFtNs001]

(5)终于可写为SDR的标准形式:
minimize ⁡ Y ∈ H n ( Tr ⁡ C Y )  subject to  { Tr ⁡ ( A 1 Y ) = N R F t N s N t Tr ⁡ ( A 2 Y ) = 1 Y ⪰ 0 , rank ⁡ ( Y ) = 1 \begin{aligned} &\underset{\mathbf{Y} \in \mathbb{H}^{n}}{\operatorname{minimize}} \underset{\operatorname{Tr}}(\mathbf{C Y}) \\ &\text { subject to }\left\{\begin{array}{l} \operatorname{Tr}\left(\mathbf{A}_{1} \mathbf{Y}\right)=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \\ \operatorname{Tr}\left(\mathbf{A}_{2} \mathbf{Y}\right)=1 \\ \mathbf{Y} \succeq 0, \operatorname{rank}(\mathbf{Y})=1 \end{array}\right. \end{aligned} YHnminimizeTr(CY) subject to Tr(A1Y)=NtNRFtNsTr(A2Y)=1Y0,rank(Y)=1
通过松弛掉最后一个约束, 问题就可以通过凸优化直接求解。
最后必须强调, 如何从 Y \mathbf{Y} Y中恢复出 b \mathbf{b} b(即原问题真正的目标)。 首先,用特征值分解得到 y \mathbf{y} y。 此时 y \mathbf{y} y的最后一个元素大概率不是1,而按照定义案例 t t t应该必须是 1 或 − 1 1或-1 11。此时处理方式很简单, 直接对最后一个元素取正负号, 强行归成 1 1 1 − 1 -1 1即可。 而 b \mathbf{b} b y \mathbf{y} y的前面的元素)也不符合 ∥ b ∥ 2 2 = N R F t N s N t \|\mathbf{b}\|_{2}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} b22=NtNRFtNs的约束,此时的做法就是将 b \mathbf{b} b强行归一化成 ∥ b ∥ 2 2 = N R F t N s N t \|\mathbf{b}\|_{2}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} b22=NtNRFtNs即可。 操作非常简单, 那么其对应的思路就是我们在上文中提到的:当得到了 x x x后, 以离 x x x最近的可行解作为原问题的解。

实例2

再举个近期的实例好了。 是来自于 智能反射面相关paper 《Intelligent Reflecting Surface Enhanced Wireless
Network: Joint Active and Passive Beamforming Design》中, 对于passive beamforming 的设计, 同样使用了 SDR 算法。

原问题可以转化为这样的形式:
max ⁡ v v H Φ Φ H v + v H Φ h d + h d H Φ H v  s.t.  ∣ v n ∣ = 1 , ∀ n = 1 , ⋯   , N \begin{array}{cl} \max _{\boldsymbol{v}} & \boldsymbol{v}^{H} {\Phi} \Phi^{H} \boldsymbol{v}+\boldsymbol{v}^{H}{\Phi} \boldsymbol{h}_{d}+\boldsymbol{h}_{d}^{H}{\Phi}^{H} \boldsymbol{v} \\ \text { s.t. } & \left|v_{n}\right|=1, \forall n=1, \cdots, N \end{array} maxv s.t. vHΦΦHv+vHΦhd+hdHΦHvvn=1,n=1,,N
简单而言, 就是其余参数都已给定, 要求优化向量 v \mathbf{v} v, 其中 v \mathbf{v} v的每个元素需要满足恒模约束。
那么同样的, 可以通过引入辅助变量 t t t, 把问题转换为 齐次的 QCQP 问题:

max ⁡ v ‾ v ‾ H R v ‾  s.t.  ∣ v ˉ n ∣ = 1 , ∀ n = 1 , ⋯   , N + 1 \begin{array}{cl} \max _{\overline{\boldsymbol{v}}} & \overline{\boldsymbol{v}}^{H} \boldsymbol{R} \overline{\boldsymbol{v}} \\ \text { s.t. } & \left|\bar{v}_{n}\right|=1, \forall n=1, \cdots, N+1 \end{array} maxv s.t. vHRvvˉn=1,n=1,,N+1

其中,
R = [ Φ Φ H Φ h d h d H Φ H 0 ] , v ‾ = [ v t ] \boldsymbol{R}=\left[\begin{array}{cc} \boldsymbol{\Phi} \Phi^{H} & \mathbf{\Phi} \boldsymbol{h}_{d} \\ \boldsymbol{h}_{d}^{H} \boldsymbol{\Phi}^{H} & 0 \end{array}\right], \quad \overline{\boldsymbol{v}}=\left[\begin{array}{l} v \\ t \end{array}\right] R=[ΦΦHhdHΦHΦhd0],v=[vt]

那么根据SDR的方法, 令 V = v ˉ v ˉ H \mathbf{V}=\bar{\mathbf{v}}\bar{\mathbf{v}}^H V=vˉvˉH, 就可以将问题转化为:

max ⁡ V tr ⁡ ( R V )  s.t.  V n , n = 1 , ∀ n = 1 , ⋯   , N + 1 , V ⪰ 0 \begin{array}{ll} \max _{\boldsymbol{V}} & \operatorname{tr}(\boldsymbol{R} \boldsymbol{V}) \\ \text { s.t. } & \boldsymbol{V}_{n, n}=1, \forall n=1, \cdots, N+1, \\ & \boldsymbol{V} \succeq 0 \end{array} maxV s.t. tr(RV)Vn,n=1,n=1,,N+1,V0

当然这里同样的放松掉了 rank ⁡ ( V ) = 1 \operatorname{rank}(\boldsymbol{V})=1 rank(V)=1这一约束。 可以看到, 上述问题已经是凸问题了, 因为非凸的恒模约束经过转化后变成了 V n , n = 1 , ∀ n = 1 , ⋯   , N + 1 \boldsymbol{V}_{n, n}=1, \forall n=1, \cdots, N+1 Vn,n=1,n=1,,N+1, 这无疑是一个凸约束 (可以用凸集的定义轻松得证)。

因此, SDR也是处理恒模约束的一种思路。

注意, 这个例子的后续处理,也是从SDR解 V \mathbf{V} V获得原问题可行解的一种经典思路:SDR + Gaussian randomization. 这种处理相比于上面提到的直接寻找欧氏距离最近的 v \mathbf{v} v,会有通过复杂度提升换来的一定性能增益。

首先, 对 V \mathbf{V} V进行 EVD分解, 得到 V = U Σ U H \boldsymbol{V}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{U}^{H} V=UΣUH, 此时, 我们令 v ‾ = U Σ 1 / 2 r \overline{\boldsymbol{v}}=\boldsymbol{U} \boldsymbol{\Sigma}^{\mathbf{1} / \mathbf{2}} \boldsymbol{r} v=UΣ1/2r, 其中 r ∈ C N ( 0 , I N + 1 ) \boldsymbol{r} \in \mathcal{C} \mathcal{N}\left(\mathbf{0}, \boldsymbol{I}_{N+1}\right) rCN(0,IN+1)。 注意, 如果是上面提到的普通SDR方法, r = [ 1 , 0 , ⋯   , 0 ] \mathbf{r}=[1, 0, \cdots, 0] r=[1,0,,0], 即 v ˉ \bar{\mathbf{v}} vˉ等于最大特征向量。 而这里,引入了一个随机变量, 使得我们尝试更多种的 v ˉ \bar{\mathbf{v}} vˉ, 再选出使得目标函数值最大的 v ˉ \bar{\mathbf{v}} vˉ作为最优解。 可以看到, 这种方法其实就是通过遍历更多解来获得更好的性能。 最后, 还是把得到的 v ˉ \bar{\mathbf{v}} vˉ转换为可行解: v = e j arg ⁡ ( [ v ˉ v ˉ N + 1 ] ( 1 : N ) ) \boldsymbol{v}=e^{j \arg \left(\left[\frac{\bar{v}}{\bar{v}_{N+1}}\right]_{(1: N)}\right)} v=ejarg([vˉN+1vˉ](1:N))

代码

关于SDR 更细节一些的实现和相关代码, 在下一篇博文 经典的SDR算法(下):SDR的具体使用细节与相关代码 进行了更详细的介绍。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219291.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • xiao zhang   jia you[通俗易懂]

    xiao zhang   jia you[通俗易懂]加油! 转载于:https://blog.51cto.com/755633522/542479

  • 二进制补码-反码-原码「建议收藏」

    二进制补码-反码-原码「建议收藏」最近学习java基础语法的时候,对其基本数据结构中的二进制位数与十进制大小间的转换产生了疑惑,想起学习IP地址的时候也貌似产生了相同的困惑,所以干脆总结一下,权当学习及备忘了。在计算机内,定点数有

  • 什么是重载什么是覆盖_java覆盖和重载的关系

    什么是重载什么是覆盖_java覆盖和重载的关系java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限

  • charles打断点有什么用_charles打断点后 如何执行

    charles打断点有什么用_charles打断点后 如何执行前言Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。此时,我们只需网上找一个注册码即可解

  • Android 三重缓存

    Android 三重缓存文章目录内存缓存Bitmap内存复用在Android应用中不可避免地要显示很多图片,如果不做处理,不管图片是否显示过,每次启动时都需要从网络拉取,这就极大影响了图片加载速度和浪费用户流量,并且整个应用中的图片内存无法控制在一个总的范围内。因此,图片缓存在一个图片加载模块中很重要并且不可缺少。目前比较流行的图片框架,如Glide、Fresco等,都使用了“内存-本地-网络”三级缓存策略。首…

  • 3分钟教你子网划分–(内含习题讲解)

    3分钟教你子网划分–(内含习题讲解)一.IPV41.IP地址IP地址分为IPV4和IPV6,但现在目前大家所常用的为IPV4。IPV4是由32位二进制数组成,分成四组,每组八位。例如:11000000111100000000000000000000为了便于配置通常表示成点分十进制例如:192.168.1.1IPV6由128位组成,一般用冒号分隔,十六进制表示2.IPV4地址组成IPV4是由两部分组成,即:网络部分(NETWORK)主机部分(HOST)例:192.168.1.132网络部分:192.168.1

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号