meta: 重构起点基线

新增 .gitignore 项目规则、CLAUDE.md(含 git 规范)、
agent_instruction.md 重构指导。作为 agent_instruction.md
阶段 1 之前的回滚锚点。
This commit is contained in:
2026-06-14 16:35:12 +08:00
commit f665c5e259
32 changed files with 34903 additions and 0 deletions
+472
View File
@@ -0,0 +1,472 @@
\section{问题建模}
本节作为全文模型层的统一入口。除单阵列基础模型沿用一般方向参数 $\bm\theta_k$ 外,后续单用户多星主线均采用第~\ref{sec:assumptionsAndNotation} 节中的新符号体系:全局 DoA 写为 $\boldsymbol\xi=[\alpha,\beta]^\Tran$,参考星链路归一化 Doppler 写为 $\nu_{\mathrm{ref}}$,Doppler rate 写为 $\dot\nu_{\mathrm{ref}}$。
\subsection{单阵列 DoA 估计问题}
\label{subsec:single_arr_doa_est}
假设有 $K$ 个信源,来向参数记为
\begin{equation}
\bm{\Theta}
\triangleq
\left[\bm{\theta}_1,\ldots,\bm{\theta}_K\right],
\end{equation}
快拍数(或采样点数)为 $T$,采样间隔为 $T_{\mathrm{s}}$。则 $M$ 元阵列在第 $t$ 个快拍的接收向量可表示为
\begin{align}
\label{eq:single_arr_doa_model}
\mathbf y_t
=
\mathbf A(\bm{\Theta})\mathbf x_t + \mathbf n_t,
\qquad t=0,1,\ldots,T-1,
\end{align}
其中:
\begin{itemize}
\item 观测向量:$\mathbf y_t \in \mathbb C^{M\times 1}$;
\item 导向矩阵:
\begin{equation*}
\mathbf A(\bm{\Theta})
\triangleq
\left[\mathbf a(\bm{\theta}_1),\ldots,\mathbf a(\bm{\theta}_K)\right]
\in \mathbb C^{M\times K},
\end{equation*}
其中 $\mathbf a(\bm{\theta}_k)$ 为第 $k$ 个信源对应的导向矢量;
\item 信源向量:$\mathbf x_t=[x_1(t),\ldots,x_K(t)]^\Tran\in\mathbb C^{K\times 1}$;
\item 噪声向量:$\mathbf n_t\sim\mathcal{CN}(\mathbf 0,\sigma_n^2\mathbf I_M)$。
\end{itemize}
将所有快拍按列堆叠,可得矩阵形式
\begin{equation}
\mathbf Y = \mathbf A(\bm{\Theta})\mathbf X + \mathbf N,
\end{equation}
其中 $\mathbf Y=[\mathbf y_0,\ldots,\mathbf y_{T-1}]\in\mathbb C^{M\times T}$,
$\mathbf X=[\mathbf x_0,\ldots,\mathbf x_{T-1}]\in\mathbb C^{K\times T}$,
$\mathbf N=[\mathbf n_0,\ldots,\mathbf n_{T-1}]\in\mathbb C^{M\times T}$。
为统一表示,将所有未知方向参数收集为
\begin{equation*}
\boldsymbol\eta
\triangleq
\vect(\bm\Theta)
=
\left[\bm\theta_1^\Tran,\ldots,\bm\theta_K^\Tran\right]^\Tran.
\end{equation*}
于是单阵列 \gls{doa} 估计问题可表述为
\begin{equation}
\widehat{\boldsymbol\eta}
=
\argmin_{\boldsymbol\eta}\;\mathcal J(\boldsymbol\eta),
\end{equation}
其中 $\mathcal J(\cdot)$ 为依赖于具体方法的代价函数,例如 \gls{mle}、\gls{music} 或 \gls{esprit} 对应的准则函数。
\subsection{多阵列(多卫星) DoA 估计问题}
\label{subsec:multi_arr_doa_est}
假设存在 $L$ 个相互独立的接收阵列,第 $\ell$ 个阵列具有 $M_\ell$ 个阵元。所有信源的真实来向仍由全局方向参数
\begin{equation}
\bm\Theta
=
\left[\bm\theta_1,\ldots,\bm\theta_K\right]
\end{equation}
描述,但由于各阵列所在位置和姿态不同,同一全局方向在各阵列上的局部来向一般不同。记第 $\ell$ 个阵列的局部来向映射为
\begin{equation*}
\bm\theta_{\ell,k}=f_\ell(\bm\theta_k),
\end{equation*}
其中 $f_\ell(\cdot)$ 由几何关系唯一确定。则第 $\ell$ 个阵列在第 $t$ 个快拍的接收向量可写为
\begin{align}
\label{eq:multi_arr_doa_model}
\mathbf y_{\ell,t}
=
\mathbf A_\ell(\bm\Theta)\mathbf x_t + \mathbf n_{\ell,t},
\qquad
\ell=0,1,\ldots,L-1,\;
t=0,1,\ldots,T-1,
\end{align}
其中
\begin{itemize}
\item $\mathbf y_{\ell,t}\in\mathbb C^{M_\ell\times 1}$;
\item
$
\mathbf A_\ell(\bm\Theta)
\triangleq
\left[
\mathbf a_\ell(\bm\theta_{\ell,1}),\ldots,\mathbf a_\ell(\bm\theta_{\ell,K})
\right]
\in \mathbb C^{M_\ell\times K};
$
\item $\mathbf x_t\in\mathbb C^{K\times 1}$ 为所有信源在第 $t$ 个快拍的复包络;
\item $\mathbf n_{\ell,t}\sim\mathcal{CN}(\mathbf 0,\sigma_{n,\ell}^2\mathbf I_{M_\ell})$,不同阵列之间相互独立。
\end{itemize}
将每个阵列的观测堆叠,可得
\begin{equation}
\mathbf Y_\ell
=
\mathbf A_\ell(\bm\Theta)\mathbf X + \mathbf N_\ell,
\qquad \ell=0,1,\ldots,L-1,
\end{equation}
其中 $\mathbf Y_\ell\in\mathbb C^{M_\ell\times T}$,$\mathbf X\in\mathbb C^{K\times T}$,$\mathbf N_\ell\in\mathbb C^{M_\ell\times T}$。
与单阵列情形相同,我们关心的未知参数仍为全局方向
\begin{equation*}
\boldsymbol\eta
\triangleq
\vect(\bm\Theta)
=
\left[\bm\theta_1^\Tran,\ldots,\bm\theta_K^\Tran\right]^\Tran.
\end{equation*}
在噪声独立、各阵列观测条件独立的假设下,多阵列 \gls{doa} 估计问题可写为
\begin{equation}
\widehat{\boldsymbol\eta}
=
\argmin_{\boldsymbol\eta}\;\mathcal J_{\mathrm{joint}}(\boldsymbol\eta)
=
\argmin_{\boldsymbol\eta}\;\sum_{\ell=0}^{L-1}\mathcal J_\ell(\boldsymbol\eta),
\end{equation}
其中 $\mathcal J_\ell(\cdot)$ 为第 $\ell$ 个阵列对应的代价函数。换言之,多阵列 \gls{doa} 估计仍以同一组全局方向参数为中心,只是通过局部几何映射把该组参数一致地约束到所有阵列的局部坐标系中。
\subsection{单阵列 DoA--Doppler 估计问题}
\label{subsec:single_arr_doa_doppler_est}
在 \ref{subsec:single_arr_doa_est} 的基础上进一步引入 Doppler。本文默认 $\nu_k$ 表示第 $k$ 个信源的\emph{归一化角 Doppler},单位为 rad/sample;若需要物理 Hz 单位,应显式写作 $\nu_k^{\mathrm{Hz}}$。若在观测时间窗口内第 $k$ 个信源的归一化 Doppler 可近似看作常数,记
\begin{equation}
\boldsymbol\nu
\triangleq
[\nu_1,\ldots,\nu_K]^\Tran,
\end{equation}
则单阵列接收模型可写为
\begin{align}
\label{eq:single_arr_doa_doppler_model}
\mathbf y_t
=
\mathbf A(\bm\Theta)\mathbf D_t(\boldsymbol\nu)\mathbf x_t + \mathbf n_t,
\qquad t=0,1,\ldots,T-1,
\end{align}
其中
\begin{equation}
\mathbf D_t(\boldsymbol\nu)
\triangleq
\diag\!\big(
e^{j\nu_1 t},
\ldots,
e^{j\nu_K t}
\big)
\in\mathbb C^{K\times K}.
\end{equation}
将所有快拍堆叠,可得
\begin{equation}
\mathbf Y
=
\mathbf A(\bm\Theta)
\left[
\mathbf D_0\mathbf x_0,\ldots,\mathbf D_{T-1}\mathbf x_{T-1}
\right]
+ \mathbf N.
\end{equation}
此时待估参数除了方向外,还包括归一化 Doppler。将所有未知量收集为扩展参数向量
\begin{equation*}
\boldsymbol\eta
\triangleq
\begin{bmatrix}
\vect(\bm\Theta)\\
\boldsymbol\nu
\end{bmatrix}
=
\left[
\bm\theta_1^\Tran,\ldots,\bm\theta_K^\Tran,
\nu_1,\ldots,\nu_K
\right]^\Tran.
\end{equation*}
于是单阵列 \gls{doa}--Doppler 联合估计问题可表述为
\begin{equation}
\widehat{\boldsymbol\eta}
=
\argmin_{\boldsymbol\eta}\;\mathcal J(\boldsymbol\eta),
\end{equation}
其中 $\mathcal J(\cdot)$ 的具体形式取决于所采用的估计算法,例如 \gls{mle}、二维 \gls{music} 或空间--时间 \gls{esprit} 等。
\subsection{协作卫星 DoA--Doppler 统一符号约定}
\label{subsec:multiArrayCommonNotation}
从 \S\ref{sec:multiArrayStatDetDoaDopplerEst} 开始,本文聚焦于\emph{单用户、多卫星}的协作 DoA--Doppler 估计问题。为避免静态模型、动态模型以及各附录中重复定义并引入符号漂移,本节统一后续各节共用的几何、时间与参数记号。除特别说明外,后文均沿用本节定义。
\subsubsection{全局/局部 DoA 映射}
\label{subsec:globalLocalDoaMap}
后文统一采用全局方向参数
\begin{equation}
\boldsymbol\xi
\triangleq
\begin{bmatrix}
\alpha\\
\beta
\end{bmatrix}
\end{equation}
描述参考时刻的用户方向,并定义对应的单位方向向量为
\begin{equation}
\mathbf u(\boldsymbol\xi)
=
\begin{bmatrix}
\cos\beta\cos\alpha\\
\cos\beta\sin\alpha\\
\sin\beta
\end{bmatrix},
\qquad
\|\mathbf u(\boldsymbol\xi)\|_2=1.
\end{equation}
其中 $\alpha$ 表示全局方位角,$\beta$ 表示全局俯仰角。若需要回到多用户背景,则可写为 $\boldsymbol\xi_k=[\alpha_k,\beta_k]^\Tran$;后续单用户主线中不再显式保留该下标。
设第 $\ell$ 颗卫星在参考时刻的位置与速度分别为 $\mathbf s_\ell$ 和 $\mathbf v_\ell$。定义其本地阵列坐标基为
\begin{equation}
\mathbf e_{3,\ell}=-\frac{\mathbf s_\ell}{\|\mathbf s_\ell\|_2},
\qquad
\mathbf e_{2,\ell}=\frac{\mathbf s_\ell\times\mathbf v_\ell}{\|\mathbf s_\ell\times\mathbf v_\ell\|_2},
\qquad
\mathbf e_{1,\ell}=\mathbf e_{2,\ell}\times\mathbf e_{3,\ell},
\end{equation}
并记从本地坐标系到全局坐标系的旋转矩阵为
\begin{equation}
\boldsymbol{\Omega}_\ell
\triangleq
\begin{bmatrix}
\mathbf e_{1,\ell},\mathbf e_{2,\ell},\mathbf e_{3,\ell}
\end{bmatrix}
\in\mathbb R^{3\times 3}.
\end{equation}
于是,第 $\ell$ 颗卫星本地坐标系下的来向向量为
\begin{equation}
\mathbf u_\ell^{\mathrm{loc}}
=
\boldsymbol{\Omega}_\ell^\Tran\mathbf u(\boldsymbol\xi)
=
\begin{bmatrix}
u^{\mathrm{loc}}_{\ell,1},u^{\mathrm{loc}}_{\ell,2},u^{\mathrm{loc}}_{\ell,3}
\end{bmatrix}^\Tran.
\end{equation}
对应的局部方位角与俯仰角统一记为
\begin{equation}
\alpha_\ell^{\mathrm{loc}}
=
\operatorname{atan2}\!\big(u^{\mathrm{loc}}_{\ell,2},u^{\mathrm{loc}}_{\ell,1}\big),
\qquad
\beta_\ell^{\mathrm{loc}}
=
\arcsin\!\big(u^{\mathrm{loc}}_{\ell,3}\big).
\end{equation}
因此,第 $\ell$ 颗卫星的阵列导向矢量统一定义为
\begin{equation}
\mathbf a_\ell(\boldsymbol\xi)
\triangleq
\mathbf a_\ell\!\big(\alpha_\ell^{\mathrm{loc}},\beta_\ell^{\mathrm{loc}}\big)
\in\mathbb C^{M_\ell\times 1}.
\end{equation}
后续静态、多帧连续相位以及独立相位模型都统一使用该记号。特别地,$\mathbf a_\ell(\boldsymbol\xi)$ 始终只表示\emph{阵列导向矢量},不再用于表示轨道动力学中的加速度量。
\subsubsection{归一化 Doppler、Doppler rate 与时间索引}
\label{subsec:dopplerNormalization}
后文在物理解释层使用实际 Doppler 与实际 Doppler rate,分别记为
\begin{equation}
\nu^{\mathrm{Hz}},
\qquad
\dot\nu^{\mathrm{Hz}},
\end{equation}
单位分别为 Hz 与 Hz/s;在离散信号模型、似然函数和 \gls{crb} 推导中,统一使用归一化角 Doppler 与归一化 Doppler rate,分别记为
\begin{equation}
\nu,
\qquad
\dot\nu,
\end{equation}
单位分别为 rad/sample 与 rad/sample$^2$。它们满足关系
\begin{equation}
\nu = 2\pi\nu^{\mathrm{Hz}} T_{\mathrm{s}},
\qquad
\dot\nu = 2\pi\dot\nu^{\mathrm{Hz}} T_{\mathrm{s}}^2.
\end{equation}
因此,$(\nu^{\mathrm{Hz}},\dot\nu^{\mathrm{Hz}})$ 与 $(\nu,\dot\nu)$ 只是单位不同,而不是两组相互独立的参数。后续模型若未显式带有上标 $\mathrm{Hz}$,均默认使用归一化量。
在单观测块静态模型中,块内离散采样索引统一记为
\begin{equation}
t=0,1,\ldots,T-1.
\end{equation}
在多帧动态模型中,帧索引记为
\begin{equation}
p=0,1,\ldots,P-1,
\end{equation}
第 $p$ 帧起始点相对于参考时刻的离散采样偏移记为 $\tau_p$,并约定 $\tau_0=0$。相应地,第 $p$ 帧第 $t$ 个采样对应的全局离散时间索引统一写为
\begin{equation}
t_{p,t}
\triangleq
\tau_p+t,
\qquad
p=0,\ldots,P-1,\;t=0,\ldots,T-1.
\end{equation}
后文中,括号内的 $t$ 始终表示\emph{帧内局部采样索引},而 $t_{p,t}$ 表示其对应的\emph{全局离散时间位置}。
\subsubsection{参考卫星参数化}
\label{subsec:refSatParameterization}
为统一多星协作模型与单星基线模型,后续各节固定选择一颗卫星作为\emph{参考卫星},其索引记为
\begin{equation}
\ell_{\mathrm{ref}},
\end{equation}
除特别说明外,默认取 $\ell_{\mathrm{ref}}=0$。后文中涉及 ``ref'' 的 Doppler 参数,均指\emph{参考卫星链路}上的参数,而不再使用星群质心或星群平均速度定义参考 Doppler。
据此,后续静态 DoA--Doppler 主参数统一写为
\begin{equation}
\boldsymbol\eta_{\mathrm{stat}}
=
\begin{bmatrix}
\boldsymbol\xi\\
\nu_{\mathrm{ref}}
\end{bmatrix},
\end{equation}
其中 $\nu_{\mathrm{ref}}$ 为参考时刻、参考卫星链路上的归一化 Doppler。在动态多帧模型中,主估计目标默认仍写为
\begin{equation}
\boldsymbol\eta_{\mathrm{dyn}}
=
\boldsymbol\eta_{\mathrm{stat}}
=
\begin{bmatrix}
\boldsymbol\xi\\
\nu_{\mathrm{ref}}
\end{bmatrix},
\end{equation}
而参考卫星链路上的归一化 Doppler rate $\dot\nu_{\mathrm{ref}}$ 默认放入干扰参数侧。若进一步加入参考星链路时延,则 DoA--Doppler--delay 扩展模型的主参数可写为
\begin{equation}
\boldsymbol\eta_{\tau}
=
\begin{bmatrix}
\boldsymbol\xi\\
\tau_{\mathrm{ref}}\\
\nu_{\mathrm{ref}}
\end{bmatrix}.
\end{equation}
给定全局方向 $\boldsymbol\xi$ 以及参考卫星链路参数 $(\nu_{\mathrm{ref}},\dot\nu_{\mathrm{ref}})$ 后,其余卫星的局部链路参数统一通过几何映射表示为
\begin{equation}
\nu_\ell
=
f_{\nu,\ell}(\boldsymbol\xi,\nu_{\mathrm{ref}}),
\qquad
\dot\nu_\ell
=
f_{\dot\nu,\ell}(\boldsymbol\xi,\dot\nu_{\mathrm{ref}}),
\qquad \ell=0,1,\ldots,L-1.
\end{equation}
等价地,也可写成
\begin{equation}
\nu_\ell
=
\nu_{\mathrm{ref}}+\Delta\nu_\ell(\boldsymbol\xi),
\qquad
\dot\nu_\ell
=
\dot\nu_{\mathrm{ref}}+\Delta\dot\nu_\ell(\boldsymbol\xi),
\end{equation}
其中 $\Delta\nu_\ell(\boldsymbol\xi)$ 与 $\Delta\dot\nu_\ell(\boldsymbol\xi)$ 均由已知几何、速度与姿态关系确定。
因此,从 \S\ref{sec:multiArrayStatDetDoaDopplerEst} 到各附录,后文统一遵循以下原则:
\begin{enumerate}
\item 全局方向统一用 $\boldsymbol\xi=[\alpha,\beta]^\Tran$;
\item 局部来向角统一写成 $\alpha_\ell^{\mathrm{loc}}$ 与 $\beta_\ell^{\mathrm{loc}}$;
\item 局部导向矢量统一写成 $\mathbf a_\ell(\boldsymbol\xi)$;
\item 物理量层用 $(\nu^{\mathrm{Hz}},\dot\nu^{\mathrm{Hz}})$,离散模型层用 $(\nu,\dot\nu)$;
\item Doppler 参考量统一定义在参考卫星链路上,而不是星群平均参考点上;
\item 动态模型中 $\dot\nu_{\mathrm{ref}}$ 默认是干扰参数,主估计目标仍为 $\boldsymbol\eta_{\mathrm{dyn}}=[\boldsymbol\xi^\Tran,\nu_{\mathrm{ref}}]^\Tran$;
\item 多帧模型的时间索引统一用 $(p,t,\tau_p,t_{p,t})$ 表示。
\end{enumerate}
\subsection{阵列模型}
\subsubsection{ULA}
\label{subsubsec:single_arr_ula_model}
对于 \gls{ula},假设阵元间距为 $d$,工作波长为 $\lambda_{\mathrm{c}}$,第 $k$ 个信源的到达角为标量 $\theta_k$。由于 \gls{ula} 只有一个角度维度的分辨能力,这里采用一维角度参数化,其导向矢量可写为
\begin{equation}
\mathbf a_{\mathrm{ULA}}(\theta_k)
=
\begin{bmatrix}
1,
e^{-j\frac{2\pi}{\lambda_{\mathrm{c}}}d\sin\theta_k},
\ldots,
e^{-j\frac{2\pi}{\lambda_{\mathrm{c}}}(M-1)d\sin\theta_k}
\end{bmatrix}^\Tran
\in\mathbb C^{M\times 1}.
\end{equation}
对应的导向矩阵为
\begin{equation}
\mathbf A_{\mathrm{ULA}}(\bm\Theta)
\triangleq
\left[
\mathbf a_{\mathrm{ULA}}(\theta_1),\ldots,\mathbf a_{\mathrm{ULA}}(\theta_K)
\right]
\in\mathbb C^{M\times K}.
\end{equation}
\subsubsection{UPA}
\label{subsubsec:single_arr_upa_model}
对于 \gls{upa},假设阵列位于 $xOy$ 平面内,沿 $x$ 轴和 $y$ 轴分别等间距排布,水平方向阵元数为 $M_x$,垂直方向阵元数为 $M_y$,阵元间距分别为 $d_x$ 与 $d_y$,总阵元数为 $M=M_xM_y$。后文统一采用与全局方向一致的角度记号
\begin{equation}
\bm\theta_k
\triangleq
\begin{bmatrix}
\alpha_k\\
\beta_k
\end{bmatrix},
\end{equation}
其中 $\alpha_k$ 表示方位角,$\beta_k$ 表示俯仰角。定义平面内两个方向余弦为
\begin{equation}
u_{x,k}\triangleq\cos\beta_k\cos\alpha_k,
\qquad
u_{y,k}\triangleq\cos\beta_k\sin\alpha_k.
\end{equation}
则在 $x$ 和 $y$ 方向上的一维导向矢量分别为
\begin{subequations}
\begin{align}
\mathbf a_x(\bm\theta_k)
&=
\begin{bmatrix}
1,
e^{-j\frac{2\pi}{\lambda_{\mathrm{c}}}d_xu_{x,k}},
\ldots,
e^{-j\frac{2\pi}{\lambda_{\mathrm{c}}}(M_x-1)d_xu_{x,k}}
\end{bmatrix}^\Tran
\in\mathbb C^{M_x\times 1},\\
\mathbf a_y(\bm\theta_k)
&=
\begin{bmatrix}
1,
e^{-j\frac{2\pi}{\lambda_{\mathrm{c}}}d_yu_{y,k}},
\ldots,
e^{-j\frac{2\pi}{\lambda_{\mathrm{c}}}(M_y-1)d_yu_{y,k}}
\end{bmatrix}^\Tran
\in\mathbb C^{M_y\times 1}.
\end{align}
\end{subequations}
因此,\gls{upa} 的导向矢量可写为
\begin{equation}
\mathbf a_{\mathrm{UPA}}(\bm\theta_k)
=
\mathbf a_y(\bm\theta_k)\otimes\mathbf a_x(\bm\theta_k)
\in\mathbb C^{M\times 1},
\end{equation}
对应的导向矩阵为
\begin{equation}
\mathbf A_{\mathrm{UPA}}(\bm\Theta)
\triangleq
\left[
\mathbf a_{\mathrm{UPA}}(\bm\theta_1),\ldots,\mathbf a_{\mathrm{UPA}}(\bm\theta_K)
\right]
\in\mathbb C^{M\times K}.
\end{equation}
上述 ULA/UPA 表达只给出阵列导向矢量的标准形式;在多卫星协作场景下,后续各节统一先通过 \ref{subsec:globalLocalDoaMap} 中的全局--局部坐标映射得到 $(\alpha_\ell^{\mathrm{loc}},\beta_\ell^{\mathrm{loc}})$,再代入相应阵列类型的导向矢量表达式。
至此,全文模型所需的单阵列基线、多阵列几何映射和多星参考星参数化已经集中定义完毕。后续单阵列章节只使用本节前半部分的 $\bm\Theta$ 与 $\boldsymbol\nu$ 记号;多星 DoA--Doppler 主线则默认沿用 $\boldsymbol\xi$、$\nu_{\mathrm{ref}}$、$\dot\nu_{\mathrm{ref}}$ 以及 $\mathbf a_\ell(\boldsymbol\xi)$,不再在每个正文或附录中重新定义几何模型。