带约束的高斯牛顿法求解多音信号分离问题
一、信号模型与优化问题建立
1. 复信号模型
设观测的复信号由两个单频复指数信号加噪声组成:
x [ n ] = A 0 e j ( 2 π f 0 n T s + ϕ 0 ) + A 1 e j ( 2 π f 1 n T s + ϕ 1 ) + w [ n ] , n = 0 , 1 , … , N − 1 x[n] = A_0 e^{j(2\pi f_0 n T_s + \phi_0)} + A_1 e^{j(2\pi f_1 n T_s + \phi_1)} + w[n], \quad n=0,1,\dots,N-1 x[n]=A0ej(2πf0nTs+ϕ0)+A1ej(2πf1nTs+ϕ1)+w[n],n=0,1,…,N−1
其中:
-
A 0 , A 1 > 0 A_0, A_1 > 0 A0,A1>0 为幅度
-
f 0 , f 1 ∈ ( 0 , f s / 2 ) f_0, f_1 \in (0, f_s/2) f0,f1∈(0,fs/2) 为频率
-
ϕ 0 , ϕ 1 ∈ [ − π , π ] \phi_0, \phi_1 \in [-\pi, \pi] ϕ0,ϕ1∈[−π,π] 为相位
-
T s = 1 / f s T_s = 1/f_s Ts=1/fs 为采样间隔
-
w [ n ] ∼ C N ( 0 , σ 2 ) w[n] \sim \mathcal{CN}(0, \sigma^2) w[n]∼CN(0,σ2) 为复高斯噪声
2. 参数向量定义
将待估计参数定义为向量形式:
θ = [ A 0 , f 0 , ϕ 0 , A 1 , f 1 , ϕ 1 ] T ∈ R 6 \boldsymbol{\theta} = \left[ A_0, f_0, \phi_0, A_1, f_1, \phi_1 \right]^T \in \mathbb{R}^6 θ=[A0,f0,ϕ0,A1,f1,ϕ1]T∈R6
3. 优化目标
通过最小二乘准则估计参数:
min θ J ( θ ) = ∑ n = 0 N − 1 ∣ x [ n ] − s [ n ; θ ] ∣ 2 \min_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) = \sum_{n=0}^{N-1} \left| x[n] - s[n; \boldsymbol{\theta}] \right|^2 θminJ(θ)=n=0∑N−1∣x[n]−s[n;θ]∣2
其中信号模型为:
s [ n ; θ ] = A 0 e j ( 2 π f 0 n T s + ϕ 0 ) + A 1 e j ( 2 π f 1 n T s + ϕ 1 ) s[n; \boldsymbol{\theta}] = A_0 e^{j(2\pi f_0 n T_s + \phi_0)} + A_1 e^{j(2\pi f_1 n T_s + \phi_1)} s[n;θ]=A0ej(2πf0nTs+ϕ0)+A1ej(2πf1nTs+ϕ1)
4. 约束条件
根据物理意义添加边界约束:
{ 0 ≤ A k ≤ A max f min ≤ f k ≤ f max − π ≤ ϕ k ≤ π , k = 0 , 1 \begin{cases} 0 \leq A_k \leq A_{\max} \\ f_{\min} \leq f_k \leq f_{\max} \\ -\pi \leq \phi_k \leq \pi \end{cases}, \quad k=0,1 ⎩ ⎨ ⎧0≤Ak≤Amaxfmin≤fk≤fmax−π≤ϕk≤π,k=0,1
二、优化问题求解推导
1. 目标函数的复变函数处理
由于目标函数是复值,需用Wirtinger微积分求导。定义残差:
r n ( θ ) = x [ n ] − s [ n ; θ ] r_n(\boldsymbol{\theta}) = x[n] - s[n; \boldsymbol{\theta}] rn(θ)=x[n]−s[n;θ]
则目标函数可写为:
J ( θ ) = ∑ n = 0 N − 1 r n ( θ ) r n ( θ ) ‾ J(\boldsymbol{\theta}) = \sum_{n=0}^{N-1} r_n(\boldsymbol{\theta}) \overline{r_n(\boldsymbol{\theta})} J(θ)=n=0∑N−1rn(θ)rn(θ)
其中 ( ⋅ ) ‾ \overline{(\cdot)} (⋅)表示复共轭。
2. 梯度计算(Wirtinger导数)
Wirtinger导数定义为:
∇ θ J = 2 ∑ n = 0 N − 1 Re ( ∂ r n ∂ θ H r n ) \nabla_{\boldsymbol{\theta}} J = 2 \sum_{n=0}^{N-1} \operatorname{Re} \left( \frac{\partial r_n}{\partial \boldsymbol{\theta}}^H r_n \right) ∇θJ=2n=0∑N−1Re(∂θ∂rnHrn)
其中 ( ⋅ ) H (\cdot)^H (⋅)H表示共轭转置。具体到每个参数:
- 幅度 A 0 A_0 A0的梯度分量:
∂ r n ∂ A 0 = − e j ( 2 π f 0 n T s + ϕ 0 ) \frac{\partial r_n}{\partial A_0} = -e^{j(2\pi f_0 n T_s + \phi_0)} ∂A0∂rn=−ej(2πf0nTs+ϕ0)
∂ J ∂ A 0 = 2 Re ( ∑ n = 0 N − 1 [ − e − j ( 2 π f 0 n T s + ϕ 0 ) ] r n ) \frac{\partial J}{\partial A_0} = 2 \operatorname{Re} \left( \sum_{n=0}^{N-1} \left[ -e^{-j(2\pi f_0 n T_s + \phi_0)} \right] r_n \right) ∂A0∂J=2Re(n=0∑N−1[−e−j(2πf0nTs+ϕ0)]rn)
- 频率 f 0 f_0 f0的梯度分量:
∂ r n ∂ f 0 = − j ⋅ 2 π n T s A 0 e j ( 2 π f 0 n T s + ϕ 0 ) \frac{\partial r_n}{\partial f_0} = -j \cdot 2\pi n T_s A_0 e^{j(2\pi f_0 n T_s + \phi_0)} ∂f0∂rn=−j⋅2πnTsA0ej(2πf0nTs+ϕ0)
∂ J ∂ f 0 = 2 Re ( ∑ n = 0 N − 1 [ j ⋅ 2 π n T s A 0 e − j ( 2 π f 0 n T s + ϕ 0 ) ] r n ) \frac{\partial J}{\partial f_0} = 2 \operatorname{Re} \left( \sum_{n=0}^{N-1} \left[ j \cdot 2\pi n T_s A_0 e^{-j(2\pi f_0 n T_s + \phi_0)} \right] r_n \right) ∂f0∂J=2Re(n=0∑N−1[j⋅2πnTsA0e−j(2πf0nTs+ϕ0)]rn)
- 相位 ϕ 0 \phi_0 ϕ0的梯度分量:
∂ r n ∂ ϕ 0 = − j A 0 e j ( 2 π f 0 n T s + ϕ 0 ) \frac{\partial r_n}{\partial \phi_0} = -j A_0 e^{j(2\pi f_0 n T_s + \phi_0)} ∂ϕ0∂rn=−jA0ej(2πf0nTs+ϕ0)
∂ J ∂ ϕ 0 = 2 Re ( ∑ n = 0 N − 1 [ j A 0 e − j ( 2 π f 0 n T s + ϕ 0 ) ] r n ) \frac{\partial J}{\partial \phi_0} = 2 \operatorname{Re} \left( \sum_{n=0}^{N-1} \left[ j A_0 e^{-j(2\pi f_0 n T_s + \phi_0)} \right] r_n \right) ∂ϕ0∂J=2Re(n=0∑N−1[jA0e−j(2πf0nTs+ϕ0)]rn)
( A 1 , f 1 , ϕ 1 A_1, f_1, \phi_1 A1,f1,ϕ1的梯度形式类似,只需将下标0改为1)
3. Hessian矩阵近似
为加速收敛,采用Gauss-Newton法近似Hessian:
H ( θ ) ≈ 2 ∑ n = 0 N − 1 Re ( ∂ r n ∂ θ H ∂ r n ∂ θ ) \mathbf{H}(\boldsymbol{\theta}) \approx 2 \sum_{n=0}^{N-1} \operatorname{Re} \left( \frac{\partial r_n}{\partial \boldsymbol{\theta}}^H \frac{\partial r_n}{\partial \boldsymbol{\theta}} \right) H(θ)≈2n=0∑N−1Re(∂θ∂rnH∂θ∂rn)
其中雅可比矩阵的行向量为:
J n = ∂ r n ∂ θ = [ ∂ r n ∂ A 0 , ∂ r n ∂ f 0 , ∂ r n ∂ ϕ 0 , ∂ r n ∂ A 1 , ∂ r n ∂ f 1 , ∂ r n ∂ ϕ 1 ] \mathbf{J}_n = \frac{\partial r_n}{\partial \boldsymbol{\theta}} = \left[ \frac{\partial r_n}{\partial A_0}, \frac{\partial r_n}{\partial f_0}, \frac{\partial r_n}{\partial \phi_0}, \frac{\partial r_n}{\partial A_1}, \frac{\partial r_n}{\partial f_1}, \frac{\partial r_n}{\partial \phi_1} \right] Jn=∂θ∂rn=[∂A0∂rn,∂f0∂rn,∂ϕ0∂rn,∂A1∂rn,∂f1∂rn,∂ϕ1∂rn]
4. 带约束的Gauss-Newton算法
迭代格式如下:
步骤1:初始化参数 θ ( 0 ) \boldsymbol{\theta}^{(0)} θ(0),设置迭代索引 k = 0 k=0 k=0
步骤2:计算当前残差 r n ( k ) = x [ n ] − s [ n ; θ ( k ) ] r_n^{(k)} = x[n] - s[n; \boldsymbol{\theta}^{(k)}] rn(k)=x[n]−s[n;θ(k)]
步骤3:计算梯度 g ( k ) = ∇ J ( θ ( k ) ) \mathbf{g}^{(k)} = \nabla J(\boldsymbol{\theta}^{(k)}) g(k)=∇J(θ(k))和近似Hessian H ( k ) \mathbf{H}^{(k)} H(k)
步骤4:求解带约束的线性最小二乘问题:
δ ( k ) = arg min δ ∥ J ( k ) δ + r ( k ) ∥ 2 \boldsymbol{\delta}^{(k)} = \arg \min_{\boldsymbol{\delta}} \| \mathbf{J}^{(k)} \boldsymbol{\delta} + \mathbf{r}^{(k)} \|^2 δ(k)=argδmin∥J(k)δ+r(k)∥2
s.t. θ ( k ) + δ ∈ Ω \text{s.t.} \quad \boldsymbol{\theta}^{(k)} + \boldsymbol{\delta} \in \Omega s.t.θ(k)+δ∈Ω
其中 Ω \Omega Ω为参数可行域, r ( k ) = [ r 0 ( k ) , … , r N − 1 ( k ) ] T \mathbf{r}^{(k)} = [r_0^{(k)}, \dots, r_{N-1}^{(k)}]^T r(k)=[r0(k),…,rN−1(k)]T
步骤5:更新参数 θ ( k + 1 ) = θ ( k ) + μ δ ( k ) \boldsymbol{\theta}^{(k+1)} = \boldsymbol{\theta}^{(k)} + \mu \boldsymbol{\delta}^{(k)} θ(k+1)=θ(k)+μδ(k)( μ \mu μ为步长)
步骤6:若 ∥ δ ( k ) ∥ < ϵ \|\boldsymbol{\delta}^{(k)}\| < \epsilon ∥δ(k)∥<ϵ则停止,否则 k ← k + 1 k \leftarrow k+1 k←k+1转步骤2
三、边界约束处理策略
采用投影梯度法处理边界约束:
- 在每次迭代更新后,检查参数是否越界:
θ new = P Ω ( θ + μ δ ) \boldsymbol{\theta}_{\text{new}} = \mathcal{P}_{\Omega} \left( \boldsymbol{\theta} + \mu \boldsymbol{\delta} \right) θnew=PΩ(θ+μδ)
其中投影算子 P Ω \mathcal{P}_{\Omega} PΩ定义为:
P Ω ( θ i ) = { θ min , i θ i < θ min , i θ i θ min , i ≤ θ i ≤ θ max , i θ max , i θ i > θ max , i \mathcal{P}_{\Omega}(\theta_i) = \begin{cases} \theta_{\min,i} & \theta_i < \theta_{\min,i} \\ \theta_i & \theta_{\min,i} \leq \theta_i \leq \theta_{\max,i} \\ \theta_{\max,i} & \theta_i > \theta_{\max,i} \end{cases} PΩ(θi)=⎩ ⎨ ⎧θmin,iθiθmax,iθi<θmin,iθmin,i≤θi≤θmax,iθi>θmax,i
- 对于相位周期性约束,投影后需归一化到 [ − π , π ] [-\pi, \pi] [−π,π]:
ϕ proj = m o d ( ϕ + π , 2 π ) − π \phi_{\text{proj}} = \mod(\phi + \pi, 2\pi) - \pi ϕproj=mod(ϕ+π,2π)−π
四、算法完整流程(伪代码)
输入:观测信号 x[0..N-1], 采样率 fs, 初始估计 θ_init输出:优化参数 θ_opt设定:最大迭代次数 K, 容差 ε, 步长 μ=0.1θ_prev ← θ_initfor k = 1 to K do// 1. 计算当前残差和雅可比矩阵for n = 0 to N-1 dor_n = x[n] - s(n; θ_prev)J_n = [∂r/∂A0, ∂r/∂f0, ∂r/∂φ0, ∂r/∂A1, ∂r/∂f1, ∂r/∂φ1] // 按Wirtinger导数公式end// 2. 构造正规方程H = Re(J^H * J) // 6×6实对称矩阵g = Re(J^H * r) // 6×1实向量// 3. 求解线性系统 (带约束)δ = H \ g // 高斯消去法或Cholesky分解// 4. 带投影的参数更新θ_temp = θ_prev + μ * δθ_new = ProjectToBounds(θ_temp) // 边界投影// 5. 收敛检查if ||θ_new - θ_prev|| < ε thenbreakendθ_prev ← θ_newendθ_opt ← θ_new
五、与现有方法的理论对比
| 算法 | 计算复杂度 | 收敛速度 | 全局最优保证 | 边界处理 |
|-----------------|-------------|---------|------------|---------|
| 本文方法 | O(6^2N) | 二次收敛 | 局部最优 | 投影法 |
| SSA-BSS | O(N log N) | 一次迭代 | 依赖初始化 | 无 |
| 粒子滤波 | O(NM) | 渐近收敛 | 概率保证 | 重采样 |
| 循环对消 | O(N log N) | 一次迭代 | 无 | 无 |
注:M为粒子数
六、论文书写建议
- 问题建模部分:
-
明确定义复信号模型和参数向量
-
给出完整的最小二乘目标函数和约束条件
- 算法推导部分:
-
详细说明Wirtinger导数的推导过程
-
给出Gauss-Newton法的矩阵形式更新公式
-
解释边界投影算子的实现
- 实验部分:
-
比较梯度解析计算与数值微分的精度差异
-
展示不同SNR下的参数估计Cramér-Rao界
- 附录:
-
提供核心算法的伪代码
-
补充投影梯度的收敛性证明
通过以上数学化表达,可避免出现MATLAB工具箱依赖,提升论文的理论严谨性。实际实现时,可基于上述推导自主编写优化器(如用C++或Python实现),无需调用现成优化库。
取前两个峰值位置 f ^ 0 , f ^ 1 \hat{f}_0, \hat{f}_1 f^0,f^1
@article{chen2022,
title={Precision Extraction of Weak Harmonic Signals in Strong Interference Environments},
author={Chen, Y. and Wang, L. and Smith, J.},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={71},
pages={1–10},
year={2022},
doi={10.1109/TIM.2022.3147321}
}
其中 θ = [ A 0 , f 0 , ϕ 0 , A 1 , f 1 , ϕ 1 ] T \boldsymbol{\theta} = [A_0, f_0, \phi_0, A_1, f_1, \phi_1]^T θ=[A0,f0,ϕ0,A1,f1,ϕ1]T 是 6维参数向量
δ = − ( J T J ) − 1 J T r \boldsymbol{\delta} = -(\mathbf{J}^T\mathbf{J})^{-1}\mathbf{J}^T\mathbf{r} δ=−(JTJ)−1JTr
常用步长选择方法:
-
固定步长(不推荐):需要经验且难以适应不同迭代。
-
精确线搜索:求解α使J(θ_k + αδ_k)最小化,计算量大。
-
非精确线搜索(Armijo准则等):折中方案,保证充分下降且计算量小。