稀疏DOA估计的经典算法——l1-SVD算法

On-Grid类DOA估计经典算法——

l

1

SVD

l_1-\text{SVD}

l1​−SVD

文献”A Sparse Signal Reconstruction Perspective for Source Localization With Sensor Arrays”提出了一种稀疏表示的DOA定位算法,它属于On-Grid类算法的范畴。其核心要点有二:其一是,通过了奇异值(SVD)分解,把以大量快拍数衡量的信号模型,转换成以信源数衡量的低维信号模型;其二是,以二阶锥规划法替代通用的非线性优化方法来处理问题,使得算法更加高效。

目录

  • On-Grid类DOA估计经典算法——

    l

    1

    SVD

    l_1-\text{SVD}

    l1​−SVD

    • 过完备字典模型
    • l

      1

      l_1

      l1​范数最小化

    • SVD降维
    • 二阶锥(SOC)优化
      • 二阶锥的定义与约束
      • 二阶锥优化问题
      • 理解问题的转化
    • 与MUSIC谱估计对比
    • 实验代码
    • 文献

过完备字典模型

常用的参数标注:

M

M

M——均匀阵列的阵元数,

K

K

K——信源数,

T

T

T——时域快拍数,

N

θ

N_{\theta}

Nθ​——过完备字典的尺寸

一般的,远场DOA估计模型为:

y

(

t

)

=

A

(

θ

)

s

(

t

)

+

n

(

t

)

y(t) = \boldsymbol{A}(\theta)s(t)+n(t)

y(t)=A(θ)s(t)+n(t)其中,

A

(

θ

)

C

M

×

K

\boldsymbol{A}(\theta) \in \mathbb{C}^{M\times K}

A(θ)∈CM×K是阵列流形矩阵,

s

(

t

)

s(t)

s(t)和

n

(

t

)

n(t)

n(t)分别是

t

t

t时刻的信号向量和噪声向量,它们彼此独立。

同时,从稀疏的角度看待这个接收信号,我们可以把它重新写作:

Y

=

A

x

+

N

\boldsymbol{Y}=\boldsymbol{A}\boldsymbol{x}+\boldsymbol{N}

Y=Ax+N这时,

Y

C

M

×

T

\boldsymbol{Y}\in \mathbb{C}^{M\times T}

Y∈CM×T仍为信号接收矩阵;而

A

C

M

×

N

θ

\boldsymbol{A} \in \mathbb{C}^{M\times N_{\theta}}

A∈CM×Nθ​为过完备集的流形矩阵,过完备集可以视作:由空域划分出来方向网格(Grid)组成的集合,如过完备集为:

S

θ

=

{

9

0

:

1

:

9

0

}

\mathcal{S}_{\theta} = \{-90^{\circ}:1^{\circ}:90^{\circ}\}

Sθ​={−90∘:1∘:90∘}其对应的集合尺寸为:

N

θ

=

181

N_{\theta} = 181

Nθ​=181,对应的稀疏信号向量为:

x

C

N

θ

×

1

\boldsymbol{x}\in \mathbb{C}^{N_{\theta}\times 1}

x∈CNθ​×1,当然,它的绝大多数的元素都为0,所以才”稀疏“。

因此,恢复出信号向量

x

\boldsymbol{x}

x中不为0位置的索引,即代替了DOA估计的问题。

l

1

l_1

l1​范数最小化

因为有了噪声项的干扰,信号

x

x

x出现了一些额外的非0项。因而,为了恢复这个信号向量,我们自然而然把最小化

l

0

l_0

l0​范数作为目标函数,即使非0项数最小。

min

x

0

\min\|\boldsymbol{x}\|_0

min∥x∥0​然而,

l

0

l_0

l0​范数是非凸的,所以一般将其凸松弛为

l

1

l_1

l1​范数来处理,即,向量元素绝对值的和。

min

x

1

\min \|\boldsymbol{x}\|_1

min∥x∥1​另一方面,我们常用观测矩阵的”弗罗贝尼乌斯”范数(F)来衡量观测矩阵

Y

\boldsymbol{Y}

Y和理想接收矩阵

A

x

\boldsymbol{A}\boldsymbol{x}

Ax之间的差距,就是矩阵元素平方和再开根号:

Y

A

x

F

2

β

2

\|\boldsymbol{Y} – \boldsymbol{A}\boldsymbol{x}\|_F^2 \leq \beta^2

∥Y−Ax∥F2​≤β2这里的参数

β

2

\beta^2

β2指明了:我们能够允许的噪声参数的大小,一般可以从噪声功率处确定。

以上优化问题亦可以写成以下这种无约束的形式:

min

Y

A

x

F

2

+

λ

x

1

\min \|\boldsymbol{Y} – \boldsymbol{A}\boldsymbol{x}\|_F^2 + \lambda\|\boldsymbol{x}\|_1

min∥Y−Ax∥F2​+λ∥x∥1​这里的参数

λ

\lambda

λ用于控制”空间谱的稀疏性“和”范数偏移尺度“的平衡,约

0.1

10

0.1-10

0.1−10,它更像是一个经验值。

SVD降维

奇异值分解常常用于分析组成一个矩阵的主要成分,这很适合分析受噪声干扰的信号。将观测信号矩阵

Y

\boldsymbol{Y}

Y进行奇异值分解:

Y

=

U

L

V

H

\boldsymbol{Y} = \boldsymbol{U}\boldsymbol{L}\boldsymbol{V}^H

Y=ULVH其中,

U

C

M

×

M

\boldsymbol{U}\in \mathbb{C}^{M\times M}

U∈CM×M和

V

C

T

×

T

\boldsymbol{V}\in \mathbb{C}^{T\times T}

V∈CT×T都是酉矩阵,矩阵

L

C

M

×

T

\boldsymbol{L}\in \mathbb{C}^{M\times T}

L∈CM×T是由一个

M

×

M

M\times M

M×M的对角矩阵和

M

×

(

T

M

)

M\times(T-M)

M×(T−M)的0矩阵构成,而对角矩阵中有

K

K

K个大元素和

(

M

K

)

(M-K)

(M−K)个小元素,它们之间存在数量级的差距。因此,很自然地,我们可以把这些主成分过滤出来。

定义一个选择矩阵

D

K

C

T

×

K

\boldsymbol{D}_K\in \mathbb{C}^{T\times K}

DK​∈CT×K,它由一个尺寸为

K

K

K的单位矩阵和

(

T

K

)

×

K

(T-K)\times K

(T−K)×K的0矩阵构成。

Y

S

V

=

Y

V

D

K

=

U

L

D

K

\boldsymbol{Y}_{SV} = \boldsymbol{Y}\boldsymbol{V}\boldsymbol{D}_K = \boldsymbol{U}\boldsymbol{L}\boldsymbol{D}_K

YSV​=YVDK​=ULDK​得到一个新的接收矩阵

Y

S

V

C

M

×

K

\boldsymbol{Y}_{SV}\in \mathbb{C}^{M\times K}

YSV​∈CM×K,显然,它降低了信号的尺寸,使得算法更加高效,更适合高快拍的情景。

那么,此时,经过线性变换

V

D

K

\boldsymbol{V}\boldsymbol{D}_K

VDK​,信号的模型变为:

Y

S

V

=

A

S

S

V

+

N

S

V

\boldsymbol{Y}_{SV} = \boldsymbol{A}\boldsymbol{S}_{SV} + \boldsymbol{N}_{SV}

YSV​=ASSV​+NSV​对应的,

l

1

l_1

l1​优化问题转变成了:

min

S

S

V

Y

S

V

A

S

S

V

F

2

+

λ

s

~

l

2

1

\min_{\boldsymbol{S}_{SV}} \|\boldsymbol{Y}_{SV} – \boldsymbol{A}\boldsymbol{S}_{SV}\|_F^2 + \lambda\|\boldsymbol{\tilde{s}}^{l_2}\|_1

SSV​min​∥YSV​−ASSV​∥F2​+λ∥s~l2​∥1​由于

S

S

V

\boldsymbol{S}_{SV}

SSV​相比于

x

\boldsymbol{x}

x变成了矩阵,因而,

s

~

l

2

\boldsymbol{\tilde{s}}^{l_2}

s~l2​为矩阵

S

S

V

\boldsymbol{S}_{SV}

SSV​每一行向量的

l

2

l_2

l2​范数,用以替代

x

\boldsymbol{x}

x的每一个元素。

算法流程

二阶锥(SOC)优化

以上即为

l

1

SVD

l_1-\text{SVD}

l1​−SVD算法的核心思想,以上优化问题是凸的,通过求解非线性优化即可。

而作者进一步将该问题转化为了二阶锥规划(SOCP)的框架,进而使用更高效的内点法求解。

二阶锥的定义与约束

定义二阶锥:

C

k

=

{

[

u

t

]

:

u

R

K

1

,

t

R

,

u

t

}

\mathcal{C}_k = \left\{\begin{bmatrix} \boldsymbol{u} \\ t \end{bmatrix}: \boldsymbol{u} \in \mathbb{R}^{K-1}, t \in \mathbb{R},\|\boldsymbol{u}\| \leq t \right\}

Ck​={[ut​]:u∈RK−1,t∈R,∥u∥≤t}二阶锥约束可以表示为:

A

x

+

b

c

T

x

+

d

\|\boldsymbol{A}\boldsymbol{x}+\boldsymbol{b}\| \leq \boldsymbol{c}^T\boldsymbol{x}+\boldsymbol{d}

∥Ax+b∥≤cTx+d等价于:

[

A

c

T

]

x

+

[

b

d

]

C

k

\begin{bmatrix} \boldsymbol{A} \\ \boldsymbol{c}^T \end{bmatrix} \boldsymbol{x} + \begin{bmatrix} \boldsymbol{b} \\ \boldsymbol{d} \end{bmatrix} \in \mathcal{C}_k

[AcT​]x+[bd​]∈Ck​

二阶锥优化问题

一般形式:

min

x

f

T

x

s

.

t

A

i

x

+

b

i

c

i

T

x

+

d

i

F

x

=

g

\min_{\boldsymbol{x}} \quad \boldsymbol{f}^T\boldsymbol{x} \\ s.t \quad \|\boldsymbol{A}_i\boldsymbol{x}+\boldsymbol{b}_i\| \leq \boldsymbol{c}_i^T\boldsymbol{x}+\boldsymbol{d}_i \\ \quad \boldsymbol{F}\boldsymbol{x} = \boldsymbol{g}

xmin​fTxs.t∥Ai​x+bi​∥≤ciT​x+di​Fx=g其中,

f

R

n

\boldsymbol{f} \in \mathbb{R}^n

f∈Rn,

A

i

R

n

i

×

n

\boldsymbol{A}_i\in \mathbb{R}^{n_i \times n}

Ai​∈Rni​×n,

b

i

R

n

i

\boldsymbol{b}_i\in \mathbb{R}^{n_i}

bi​∈Rni​,

c

i

R

n

\boldsymbol{c}_i\in \mathbb{R}^{n}

ci​∈Rn,

d

i

R

\boldsymbol{d}_i\in \mathbb{R}

di​∈R,

F

R

p

×

n

i

\boldsymbol{F} \in \mathbb{R}^{p \times n_i}

F∈Rp×ni​和

g

R

p

\boldsymbol{g} \in \mathbb{R}^{p}

g∈Rp。另外,待优化变量

x

R

n

\boldsymbol{x} \in \mathbb{R}^{n}

x∈Rn。

注意,二阶锥优化问题对目标函数没有绝对的要求。

理解问题的转化

作者Malioutov最终把非线性优化问题转化成了SOCP问题:

min

p

,

q

,

r

,

S

S

V

p

+

λ

q

s

.

t

vec

{

Y

S

V

A

S

S

V

}

2

2

p

1

T

r

q

S

S

V

(

i

,

:

)

2

r

i

\min_{p,q,\boldsymbol{r},\boldsymbol{S}_{SV}} \quad p + \lambda q \\ s.t \quad \|\text{vec}\{\boldsymbol{Y}_{SV} – \boldsymbol{A}\boldsymbol{S}_{SV}\}\|_2^2 \leq p \\ \boldsymbol{1}^T\boldsymbol{r} \leq q \\ \|\boldsymbol{S}_{SV}(i,:)\|_2 \leq r_i

p,q,r,SSV​min​p+λqs.t∥vec{YSV​−ASSV​}∥22​≤p1Tr≤q∥SSV​(i,:)∥2​≤ri​二阶锥规划的约束条件,简单理解为:待优化变量的仿射变换的范数小于等于另一种仿射变换。

因此,对应关系为:

x

=

[

p

q

r

vec

{

S

S

V

}

]

\boldsymbol{x} = \begin{bmatrix} p \\ q \\ \boldsymbol{r} \\ \text{vec}\{\boldsymbol{S}_{SV}\} \end{bmatrix}

x=⎣
⎡​pqrvec{SSV​}​⎦
⎤​第一个约束条件转换为:

vec

{

Y

S

V

}

(

I

A

)

vec

{

S

S

V

}

p

\|\text{vec}\{\boldsymbol{Y}_{SV}\} – \left(\boldsymbol{I}\otimes\boldsymbol{A}\right)\text{vec}\{\boldsymbol{S}_{SV}\}\| \leq p

∥vec{YSV​}−(I⊗A)vec{SSV​}∥≤p显然,这符合了二阶锥规划的约束条件的定义。

与MUSIC谱估计对比

两个信源的对比:

两种算法谱对比

两个相近的信源的谱对比:

两个相近的信源

实验代码

clc;clear all;close all;
twpi = 2*pi;
derad = pi/180;
j = sqrt(-1);

%% 生成信号
M = 8;%阵元数
c = 1500;%声速1500m/s
f = 1e4;%载频10kHz
lambda0 = c/f;%载波波长
dd = 0.5*lambda0;%阵元间距
d = 0:dd:(M-1)*dd;
theta = [10 15];
K = length(theta);%信源数
fs = 2.5*f;%采样频率
L = 100;%快拍数
t = [1:L]/fs;%时域采样
A = exp(j*twpi*d'*sin(theta*derad)/lambda0);%方向向量
S = randn(K,L).*exp(j*twpi*ones(K,1)*f*t);
snr = 20;%信噪比
Y = awgn(A*S,snr,'measured');%加入高斯白噪声

%% 构造完备字典
Grid = -90:1:90;
AA = exp(j*twpi*d'*sin(Grid*derad)/lambda0);
Dk1 = eye(K);
Dk2 = zeros(K,L-K);
Dk = [Dk1,Dk2].';
[U,~,V] = svd(Y);       %进行奇异值分解
Ysv = Y*V'*Dk;

%% 求解凸优化问题
cvx_begin quiet
variables p q
variables r(length(Grid))
variable SSV1(length(Grid),K)  complex;
expression xsv(length(Grid),1)
expressions Zk(M,K) complex
minimize( p + 2*q );
subject to
Zk = Ysv - AA*SSV1;
Zvec = vec(Zk);                  %把矩阵转化为向量
norm(Zvec,2) <= p;               %第一个不等式约束
sum(r) <= q;                     %第二个不等式约束
for i=1:length(Grid)       %第三个不等式约束
    norm(SSV1(i,:),2) <= r(i);
end
cvx_end

%% 绘制空间谱
power = 10*log10(abs(SSV1(:,1))/max(abs(SSV1(:,1))));
h1 = plot(Grid,power,'r');
hold on
xlabel('DOA/degree');
ylabel('PowerdB');

%% 绘制MUSIC空间谱
R = Y*Y'/L;
[EV,D] = eig(R);%特征值分解
DD = diag(D);%将特征值变为向量形式
[DD,I] = sort(DD);%从小到大
EV = fliplr(EV(:,I));
%%%%%%%%%%构造MUSIC的谱函数%%%%%%%%%%%
En = EV(:,K+1:M);%噪声子空间
Pmusic = zeros(1,length(Grid));
for ii = 1:length(Grid)
    Pmusic(ii) = 1/(AA(:,ii)'*En*En'*AA(:,ii));
end
Pmusic=abs(Pmusic);
Pmax = max(Pmusic);
Pmusic_db = 10*log10(Pmusic/Pmax);
h2 = plot(Grid,Pmusic_db,'b');
xlim([-90 90])
set(gca,'XTick',[-90:30:90])
grid on
hold on
m = ylim;
for i = 1:K
    line([theta(i) theta(i)],[m(1) 0],'Color','k','LineWidth',1,'LineStyle','--');
    hold on
end
legend('l1-SVD','MUSIC','Direction of Arrival');
Tick',[-90:30:90])
grid on
hold on
m = ylim;
for i = 1:K
    line([theta(i) theta(i)],[m(1) 0],'Color','k','LineWidth',1,'LineStyle','--');
    hold on
end
legend('l1-SVD','MUSIC','Direction of Arrival');

文献

链接:文献获取

提取码:6666

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/7dffe235a7.html