全局相位下两个复向量间距离的高效计算方法问询
你要计算的是复向量$\mathbf{x}$经过模为1的复数$\alpha$缩放后与$\mathbf{y}$的最小2-范数误差,这个问题存在精确解析解,无需随机采样,计算效率远高于你当前的方案。
推导过程
最小化$|\alpha \mathbf{x} - \mathbf{y}|_2$等价于最小化其平方(范数非负,单调性一致):
$$
|\alpha \mathbf{x} - \mathbf{y}|_2^2 = (\alpha \mathbf{x} - \mathbf{y})^H (\alpha \mathbf{x} - \mathbf{y})
$$
展开后利用$|\alpha|=1$的条件化简:
$$
= |\mathbf{x}|_2^2 + |\mathbf{y}|_2^2 - 2 \text{Re}\left( \alpha \mathbf{x}^H \mathbf{y} \right)
$$
要最小化上式,需最大化$\text{Re}\left( \alpha \mathbf{x}^H \mathbf{y} \right)$。设内积$\mathbf{x}^H \mathbf{y} = r e^{i\theta}$($r \geq 0$),取$\alpha = e^{-i\theta}$时,实部达到最大值$r$。代入后得到最小范数平方:
$$
|\mathbf{x}|_2^2 + |\mathbf{y}|2^2 - 2 |\mathbf{x}^H \mathbf{y}|
$$
因此最小误差的精确表达式为:
$$
\min{|\alpha|=1} |\alpha \mathbf{x} - \mathbf{y}|_2 = \sqrt{ |\mathbf{x}|_2^2 + |\mathbf{y}|_2^2 - 2 |\langle \mathbf{x}, \mathbf{y} \rangle| }
$$
其中$\langle \mathbf{x}, \mathbf{y} \rangle = \mathbf{x}^H \mathbf{y}$是复向量的共轭内积。
计算步骤
按以下步骤高效计算:
- 计算复内积:
inner = conjugate(x) @ y(对x做共轭转置后与y点乘) - 取内积的模长:
abs_inner = abs(inner) - 计算两个向量的2-范数平方:
norm_x_sq = sum(abs(x)**2),norm_y_sq = sum(abs(y)**2) - 代入公式得到最小误差:
error = sqrt(norm_x_sq + norm_y_sq - 2 * abs_inner)
方案优势
- 时间复杂度为$O(N)$($N$为向量维度),仅需一次遍历即可完成计算,远快于多次随机采样的方法
- 得到的是全局精确最小值,而非随机采样的近似结果,完全满足你的重构误差评估需求
内容的提问来源于stack exchange,提问作者ed268

