《论文复现》V型稀疏阵列实现二维DOA估计

        本篇文章是博主在最优化、通信、人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在通信领域笔记

        通信领域笔记(10)---《论文复现》V型稀疏阵列实现二维DOA估计

《论文复现》V型稀疏阵列实现二维DOA估计

目录

0.摘 要

1.引 言

2.阵列信号模型

3.V形互质阵列的设计

4.基于互质阵列的波达方向估计

5.基于VCA的二维成对波达方向估计

6.V形嵌套数组的扩展

7.方法复杂性

8.计算复杂性  

9.结论

10.MATLAB部分代码


0.摘 要

        提出了一种新的稀疏阵列几何结构,用于二维波达方向估计。该阵列结构为V型稀疏阵列,由两个相互交叉的线性部分组成。稀疏采样特性提高了稀疏阵列的自由度。在这方面,发展了V形互质(VCA)和V形嵌套阵列(VNA)结构。它可以分辨MN信号源的方位角和仰角,每个部分有2M+N-1个阵元,阵元总数为4M+2N-3个。VNA可以用2N个阵元来分辨N*2自由度的信号源。该方法代替了二维网格搜索,以高效的计算方式计算了方位和仰角估计的一维搜索。为了解决二维场景中的配对问题,利用两部分的互协方差矩阵进行二维配对进行波达方向估计。通过数值仿真对该方法的性能进行了评估,结果表明,与传统的互质平面阵列相比,所提出的阵列结构VCA和VNA可以提供更少的阵元。

        关键词:V形阵列;互质阵列;嵌套阵列;稀疏阵列;波达方向估计


1.引 言

        波达方向估计(DOA)是阵列信号处理中的一个重要问题,在雷达、声纳和无线通信等许多应用中[21]。MUSIC算法(多信号分类) [17] 是最强大的方法之一,其有效性归因于信号和噪声空间的正交性,而MUSIC算法的性能限制是估计M阵元阵列的信号源方向高达K<=M-1,这是因为至少需要一维噪声子空间。这篇论文的组织方式如下。在第二部分介绍了避让区域的路径规划问题。数值优化方法在第二节中介绍。第三部分包括QCQP的一般提法和IRM方法。第四部分细化的RRT*方法在SEC中介绍。第五部分给出了仿真结果和SEC中的分析结果。最后,第六部分对这两种方法对优势和局限性做了简单的评论。

        虽然在大多数应用中使用均匀阵列结构[8],但非均匀阵列[1,2,14-16]最近受到了极大的关注,因为它们在阵元数量方面的效率以及在信号源比阵元更多的情况下提供不确定的信号源估计,即

M<K。在早期的研究中,非均匀阵列结构被考虑在[9,10,20]的阵列内插的背景下,但是阵列处理不确定情况的特性没有被利用。非均匀阵列结构之一是最小冗余阵列(MRA),在[16]中讨论过。虽然MRA提供了比通常的均匀线阵(ULA)更高的自由度(DOF),但对于一定数量的阵元M[14],MRA没有闭合的表达式来获得MRA的阵元位置。在[1,2]中,提出了增强自由度的协方差矩阵的增广方法,其中所得到的协方差矩阵对于fi个数的快拍不是正的半fi个数。在文献[14]中,提出了用O(M)阵元来估计O(M**2)信号源的嵌套阵列结构。由于嵌套阵列具有更紧密间隔的阵元,最终导致相对较高的相互耦合,因此在[15]中引入互质阵列结构,其中阵列由较少数量的紧密间隔的元素对组成,因此发生的耦合较少。使用一维互质阵列,仅用2M+N-1阵元就可以识别多达K<=MN信号源。请注意,上述阵列结构是一维(1-D),不能用于2-D(方位和仰角)DOA估计。

        在[23,26]中考虑了互质阵列的二维DOA估计。作者在[23]中提出了一种互质平面阵列(CPA)结构。特别地,CPA由M1×M1和M2×M2的子阵组成,其中M1和M2是互质整数。该方法可以分辨出阵元元件的。文[26]中的方法推广了互质平面阵列(GCPA)的构造,[26]使用N1×M1和N2×M2两个子阵,其中N1、N2和M1、M2是互质整数集。因此,GCPA可以分辨,比使用阵元的CPA提供更高的自由度。

        对于二维DOA估计,L形阵列代替平面阵列提供了更简单的结构,被广泛用于二维DOA估计[3-5,19,24]。在[24]中,分别对方位角和仰角的估计进行了导向矩阵估计。在文[3]中,同样的问题也考虑了L形嵌套数组。在[4,5,19]中,利用L形阵列的结构,构造了用于孔径和快拍扩展的增广数据矩阵。虽然L形阵列是二维DOA估计的一个有前途的选择[6],但它返回的是耦合估计结果[7,13]。换句话说,方位角和仰角是耦合的,一个参数(比方位角)的估计误差会影响另一个参数(仰角)的精度。因此,解耦2-D DOA估计需要更一般的阵列几何结构。

        与L型阵列不同,V型稀疏阵列提供了更大的灵活性,并推广了L型阵列的概念。此外,还可以设计V型阵列,从而实现解耦DOA估计。本文提出了一种新的稀疏阵列结构-V形互质阵列(VCA),用于二维DOA估计。所提出的阵列几何结构由两个轴上的两部分组成,即U轴和V轴(见第二节)。在每个部分都个阵元,以整合互质稀疏阵列。因此,阵列中的阵元总数为。VCA在每个部分提供自由度。这导致了VCA可以分辨信号源。将所提出的V形阵列几何结构推广到嵌套阵列,仅使用2N个阵元即可构建V形嵌套阵列,并提供自由度。我们表明,与CPA[23]和GCPA[26]等其他非均匀阵列相比,所提出的阵列结构VCA和VNA提供的阵元要少得多。在所提出的DOA估计技术中,首先考虑了VSA的设计,得到了导致解耦DOA估计的VSA的V角。为了估计二维波达方向角,利用每个部分的稀疏结构,并通过向量化每个部分的数据协方差矩阵来构造更长的虚拟ULA。

        由于所得到的数据模型是Vandermonde形式的,所以采用空间平滑,然后得到秩增强型协方差矩阵[12,15]。U轴和V轴上各部分的协方差矩阵分别用于方位角和仰角估计。为了获得成对的二维波达方向角,利用各部分数据之间的互协方差矩阵,实现了自动成对的二维波达方向估计。该方法的主要贡献如下:

        1.与其他平面稀疏阵列CPA和GCPA相比,提出的阵列结构VCA和VNA需要更少的阵元来进行二维参数估计。

        2.VSA几何结构提供了非耦合的二维DOA估计,使得在分别估计方位角和仰角时能够获得准确的结果。

        3.该方法不需要计算效率低的二维搜索方法,只需使用一维搜索算法,如MUSIC算法,就可以分别得到方位和仰角的线谱。

        本文的其余部分如下。在第二部分给出了互质情况下的阵列模型,并给出了相关细节。第三部分研究了变速箱的设计和V角的计算。第四部分别针对方位角和仰角对共基阵进行了波达方向估计。第五部分介绍了本文提出的成对二维波达方向估计算法。第六部分将所提出的方法扩展到嵌套数组。第七部分考虑了所提方法的计算复杂性。在SEC中进行了数值模拟。第八部分和第九部分论文定稿,得出结论。


2.阵列信号模型

        考虑放置在YZ平面上的两个部分组成的V形阵列,如图1a所示。为简单起见,放置阵元的轴称为U轴和V轴。定义了位置集为

图2仰角和方位角的定义(θ,φ)

还有部分内容,大多为公式,不便于展示,完整的文档放在了文章末尾的链接中。


3.V形互质阵列的设计

       V形阵列的设计包括根据互质采样特性确定阵元位置和V角Ω的确定。虽然Ω在波达方向估计中似乎没有太大的影响,但它决定了方位和仰角估计之间的耦合。仰角估计问题是解耦的,即方位角(或仰角)的估计误差不影响仰角(或仰角)估计的精度。为了获得解耦DOA估计,Fisher信息矩阵的交叉项需要为零[7,13]。根据 选择的V角放置阵元可满足此条件,其中是虚拟V形阵列中的阵元数量[7]。对于M=2,N=5,M=21,,如图1所示。


4.基于互质阵列的波达方向估计

     使用(1)和(2)中的阵列模型,每个部分的协方差矩阵定义为

还有几页内容,大多为公式,不便于展示,完整的文档放在了文章末尾的链接中。


5.基于VCA的二维成对波达方向估计

     为了获得成对的DOA估计,计算和的交叉方差。在下文中,我们首先讨论了仅使用进行方位角估计的问题。然后估计仰角,该仰角与估计的方位角自动配对。

5.1方位角估计

利用(14)和(15)中给出的MUSIC伪谱进行方位角估计。由和的最高峰可以得到。利用(20)中的变换,可以估计方位角。为了获得成对的仰角,阵列导向矩阵可以构造为。在下一部分中,将使用 进行仰角估计。

还有几页内容,大多为公式,不便于展示,完整的文档放在了文章末尾的链接中。


6.V形嵌套数组的扩展

     在本节中,提出的方法将扩展到嵌套数组。由两个子阵列组成的两级嵌套阵列可以分辨多达,其中,阵列中的阵元总数[14]。为简单起见,我们假设。现在我们考虑U轴和V轴上的两个嵌套阵列进行二维DOA估计,VNA中的阵元总数为。在图4a中,给出了当时,用于VNA的阵元的位置。用于VNA的共阵如图4b所示,它由每个部分中的N个阵元和组成。从每个部分可以估计的信号源为。同样,这个数字远远少于CPA和GCPA中阵元的总数。为了得到Ω,可以进行类似的计算,对于VNA,。对于二维DOA估计,可以遵循与VCA相同的从(5)到(28)的过程,并且可以估计出二维成对的DOA角度。

(A)实际传感器位置  

  (B)VNA各部分的联合排列

图4  V形嵌套阵列(VNA)结构,N1=N2=3


7.方法复杂性

        这一部分中,讨论了所提出的方法的复杂性。为了估计方位角,需要一维频谱搜索和计算RU-SS的奇异值分解(SVD)得到噪声子空间。因此,是方位角估计的复杂度,其中是奇异值分解的复杂度,是网格中的搜索角数。为了估计仰角,当时,计算的奇异值分解。因此,仰角估计的复杂性顺序是,其中是高程网格中的搜索角数。由于谱搜索比其他操作的负担要大得多,因此该方法的复杂度为,其中忽略了其他项。为了比较所提出的方法与GCPA和CPA的复杂性,我们注意到以下几点,GCPA和CPA分别使用M1×N1、M2×N2和M1×M1、M2×M2阵列,它们对阵元的数量要求比VCA或VNA高得多。GCPA和CPA的另一个缺点是使用二维搜索算法,需要个网格点来计算MUSIC伪谱。在文献[26]中,该算法的复杂度为,远高于该方法的二维搜索复杂度。文[23]中提出的CPA方法的复杂度为,这也大大高于所提出的方法的复杂度。在表1中,总结了数组的复杂性。

表1 计算复杂性比较


8.计算复杂性  

        在这一部分中,通过数值模拟对所提出方法的性能进行了评估。我们在表2中显示了阵列VCA、VNA、CPA和GCPA的最大可解析信号源数量。如下图5可知,VCA和VNA需要的阵元数量要少得多,才能解析相同数量的信号源。这一改进归功于稀疏采样的使用和虚拟阵列的更大孔径。表3列出了每个阵列的阵元数量。我们可以从表3中观察到,与CPA[23]和GCPA[26]等其他阵列几何结构相比,所提出的阵列结构具有更少的元素数量。根据这一信息,针对不同数量的信号源,考虑了不同的方案。所需分辨率和阵元总数的结果如表4所示,其中阵列中的阵元总数VCA、VNA、CPA和GCPA分别表示为MVCA、MVNA、MCPA和MGCPA。如图所示,建议的阵列几何结构,VCA和VNA,在所考虑的所有情况下提供更少的阵元数量。此外,在不确定的情况下,VNA提供了最少的阵元来分辨信号源方向。其他平面阵列结构CPA和GCPA不像VCA和VNA那样利用稀疏性,因此需要更多的阵元。

表2不同阵列可解析的最大信号源数量

表3不同阵列的阵元数量

表四 不同场景下的数组结构比较 

 

图6 不同阵列几何结构的性能比较   

 

  图7 DOA估计性能与快拍数量的关系

        V形稀疏阵列用于二维DOA估计。因此,本实验对所提方法的配对性能进行了评估。从图中可以看出,该方法有效地估计了信号源DOA,并对它们进行了精确的配对。

        在图8中,给出了VNA的方位(A)和仰角(B)谱。有K个信号源,幅值分别为1、0.70、0.40和0.3.每部分有N=4个阵元,。方位信号源为,仰角为。注意,在增加时不选择源角。因此,本实验对所提方法的配对性能进行了评估。从图中可以看出,该方法有效地估计了信号源DOA,并对它们进行了精确的配对。

图8(a)VNA的方位角(A)和仰角(B)谱 

图8(b)VNA的方位角(A)和仰角(B)谱 


9.结论

        本文提出了一种新的阵列结构,即V形稀疏阵列(VSA),作为一种有前景的二维DOA估计结构。所提出的阵列几何结构对于特定场景所需的真实阵元来说是非常有效的,并且它不需要二维网格搜索。因此,它具有较低的计算复杂度。在互质和嵌套空间采样情况下,利用阵列的稀疏性,对它们的分辨性能进行了评估。提出的阵列结构VCA和VNA可以分别分辨和的方位角和仰角。这些分辨率极限远高于文献中提出的传统平面互质阵列结构,如CPA和GCPA。在两个信号源的方位角和仰角互换的情况下,该方法不能对信号源进行配对,但可以准确地估计角度。在未来的工作中,将集中精力克服这种情况下的配对问题。


10.MATLAB部分代码

%% 主程序流程
clear;
close all;
SIZE = 16;
aratio = [3, 1, 1];
SNRdB = 0;  % 信噪比 
SNAPSHOTS = 1000;
iT = 1;
% ==================== 目标源分布 ====================
theta_bar_min = -.45; theta_bar_max = 0.45;
phit_bar_min = -.05;  phit_bar_max = 0.05;
phit_theta_bar_min = -.4;
phit_theta_bar_max = .4;
level = 1;
K = 6; % 源数量
%% VCA
M = 4; N = 7;
Kmax = M*N;

elTrue = linspace(theta_bar_min, theta_bar_max, K).';
azTrue = linspace(phit_bar_min, phit_bar_max, K).';
randIn = randi([1,K],K,1); % 随机化源区,使其自动配对
amp = ones(K, 1);
%% V形互质数组
S = sort([(0:N-1)*M, (1:2*M-1)*N].', 'ascend'); % 位置
[n1, n2] = ndgrid(S); 
n1_n2_mat = n1 - n2; 
n1_n2_vec = n1_n2_mat(:);
D = unique(n1_n2_vec); 
title_str = 'LCA';
%% 绘制阵列
Mb = 2*M*N + 1;
ThetaBest = 2*atand(sqrt((Mb^2 + 3)/(4*Mb^2)));
Theta = ThetaBest;...60;
S0 = zeros(max(S+1),1);
S0(S+1) = S;
Su = -(S0);
Sv = S0;

for i = 1:length(Su)
posRealU(i,1:3) = [0 Su(i)*(sind(Theta/2)) ...
    abs(Su(i)*cosd(Theta/2))];
posRealV(i,1:3) = [0 Sv(i)*(sind(Theta/2)) ...
    abs(Sv(i)*cosd(Theta/2))];
posRealU(i,4) = norm(posRealU(i,:));
posRealV(i,4) = norm(posRealV(i,:));
end
holes0 = find(posRealV(:,3)==0);
posRealV(holes0(2:end),:) = [];Sv(holes0(2:end),:) = [];
posRealU(holes0(2:end),:) = [];Su(holes0(2:end),:) = [];

for i = 1:length(D)
posCoarray(i,1:3) = [0 D(i)*(sind(Theta/2)) ...
    abs(D(i)*cosd(Theta/2))];
end
for i = 1:length(D)
posCoarray(i+length(D),1:3) = [0 -(D(i)*(sind(Theta/2))) ...
    -abs(D(i)*cosd(Theta/2))];
end
posCoarrayU = [posCoarray(1:(length(D)+1)/2,:); ...
    flipud(posCoarray(length(D)+1:length(D)+(length(D)+1)/2-1,:))];
posCoarrayV = [posCoarray((length(D)+1)/2+1:length(D),:); ...
    flipud(posCoarray(length(D)+(length(D)+1)/2:end,:))];

[C] = generateConsecutiveLags(D); % 连续延迟
for i = 1:length(C)
posVirtual(i,1:3) = [0 C(i)*(sind(Theta/2)) ...
    abs(C(i)*cosd(Theta/2))];
end
for i = 1:length(C)
posVirtual(i+length(C),1:3) = [0 -(C(i)*(sind(Theta/2))) ...
    -abs(C(i)*cosd(Theta/2))];
end
posVirtualU = [posVirtual(1:(length(C)+1)/2,:); ...
    flipud(posVirtual(length(C)+1:length(C)+(length(C)+1)/2-1,:))];
posVirtualV = [posVirtual((length(C)+1)/2+1:length(C),:); ...
    flipud(posVirtual(length(C)+(length(C)+1)/2:end,:))];

%% 绘制阵列位置
figure(10)
scatter3(posRealU(:,1),posRealU(:,2),posRealU(:,3),'b','filled');
hold on
scatter3(posRealV(:,1),posRealV(:,2),posRealV(:,3),'r');
xlabel('X, [Wavelength]')
ylabel('Y, [Wavelength]')
zlabel('Z, [Wavelength]')
title('V形互质阵列实际阵元位置')
hold off
grid on
xyz = 15;
axis([-10 10 -xyz xyz -xyz xyz])
rotate3d on
view(90,0)
figure(11)
scatter3(posCoarrayU(:,1),posCoarrayU(:,2),posCoarrayU(:,3),'b','filled');
hold on
scatter3(posCoarrayV(:,1),posCoarrayV(:,2),posCoarrayV(:,3),'r');
xlabel('X, [Wavelength]')
ylabel('Y, [Wavelength]')
zlabel('Z, [Wavelength]')
title('X形阵列阵元位置')
hold off
grid on
axis tight
axis([-1 1 -xyz xyz -xyz xyz])
rotate3d on
view(90,0)
figure(12)
scatter3(posVirtualU(:,1),posVirtualU(:,2),posVirtualU(:,3),'b','filled');
hold on
scatter3(posVirtualV(:,1),posVirtualV(:,2),posVirtualV(:,3),'r');
xlabel('X, [Wavelength]')
ylabel('Y, [Wavelength]')
zlabel('Z, [Wavelength]')
title('X形阵列虚拟阵元位置')
hold off
grid on
axis tight
axis([-1 1 -xyz xyz -xyz xyz])
rotate3d on
view(90,0)

%% 阵列矩阵
posU = -posRealU(:,2)*sind(Theta/2) + posRealV(:,3)*cosd(Theta/2);
posRealLTemp = [posU * sind(Theta/2) posU*cosd(Theta/2)];
tauU1 = posRealU(:,2)*(azTrue');
tauU2 = posRealU(:,3)*(elTrue');
tauV1 = posRealV(:,2)*(azTrue');
tauV2 = posRealV(:,3)*(elTrue');
tauU = (tauU1 + tauU2);
tauV = (tauV1 + tauV2);
AU = exp(2i * pi * tauU);
AV = exp(2i * pi * tauV);
A = [AU; AV]; % 总指向矩阵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%   
LEN_S = size(A,1); % 阵元数量
Source = diag(amp) * (randn(K, SNAPSHOTS) + 1i * randn(K, SNAPSHOTS)) / sqrt(2);
% 噪声处理
noise_std = 10^(-SNRdB/20)*ones(LEN_S, 1) / sqrt(K);
Noise = diag(noise_std) * (randn(LEN_S, SNAPSHOTS) + 1i * randn(LEN_S, SNAPSHOTS)) / sqrt(2);
X = A * Source + Noise;

%% DOA估计
%生成标称虚拟数组数据
Xu = X(1:LEN_S/2,:); % y轴阵元的阵列输出
Xv = X(LEN_S/2+1:end,:); % z轴阵元的阵列输出

Ru = Xu * Xu' / SNAPSHOTS;
Rv = Xv * Xv' / SNAPSHOTS;
Ruv = Xu * Xv' / SNAPSHOTS;

[UVirtualULA, posVirtualU] = generateVirtualULA(Ru,abs(Su));
[VVirtualULA, posVirtualV] = generateVirtualULA(Rv,Sv);

%% 绘制MUSIC频谱/未配对az/el
[PuAz, azGrid] = spectral_MUSIC(UVirtualULA, K);
[PvEl, elGrid] = spectral_MUSIC(VVirtualULA, K);
uTrue = -sind(Theta/2)*azTrue + cosd(Theta/2)*elTrue;
vTrue = sind(Theta/2)*azTrue + cosd(Theta/2)*elTrue;
figure(1)
subplot(211)
semilogy(azGrid,PuAz)
hold on
for k = 1:K
    semilogy(uTrue(k)*ones(2,1),[min(PuAz) 1] ,'k-.');
end
hold off
axis tight
xlabel('$\bar{\phi}$', 'interpreter', 'latex')
ylabel('$P_{\mathcal{U}}(\varphi)$', 'interpreter', 'latex')
subplot(212)
semilogy(elGrid,PvEl)
hold on
for k = 1:K
    semilogy(vTrue(k)*ones(2,1),[min(PvEl) 1] ,'k-.');
end
hold off
axis tight
xlabel('$\bar{\theta}$', 'interpreter', 'latex')
ylabel('$P_{\mathcal{V}}(\vartheta)$', 'interpreter', 'latex')

uEst = root_MUSIC( posVirtualU, UVirtualULA, K ); % estimate DOAs

for k = 1:K
    [minVal,orderedIndex(k)] = min(abs(uTrue(k) - uEst));
end
uEst = uEst(orderedIndex); %获得准确的均方根误差计算
AuEst = exp(2i * pi * Su * sin(uEst')); % 构造估计的转向矢量
AubEst = exp(2i * pi * posVirtualU((length(UVirtualULA)+1)/2:end) * sin(uEst'));

%% Ry的特征分解
Rub = toeplitz(UVirtualULA((length(UVirtualULA)+1)/2:end), UVirtualULA((length(UVirtualULA)+1)/2:-1:1));
[EVu, EWu] = eig(Rub);
ewu = diag(EWu);
[asdf, IIu] = sort((ewu), 'descend');
Eus = EVu(:,IIu(1:K));
Sigu = diag(ewu(IIu(1:K)));
RsEst = pinv(AubEst) * Eus* Sigu * Eus' * pinv(AubEst'); % 估计信号

AvEst = (inv(RsEst) * pinv(AuEst) * Ruv).'; % 配对指向矩阵

figure(3)
for k = 1:K % 现在绘制出配对后每个源的MUSIC谱图
    RvEst(:,:,k) = AvEst(:,k)*AvEst(:,k)';
    [vVirtualULAEst, posVirtualVEst] = generateVirtualULA(squeeze(RvEst(:,:,k)),Sv);
    % MUSIC
    [PvElEst(:,k), elGridEst(:,k)] = spectral_MUSIC(vVirtualULAEst,1); % 信号源
    vEst2(k,1) = root_MUSIC( posVirtualVEst, vVirtualULAEst, 1 );  % 信号源
    if k <=6
        
        subplot(6*100 + 10 + k)
        semilogy(elGridEst,PvElEst(:,k));
        hold on
        semilogy(vTrue(k)*ones(2,1),[min(PvElEst(:,k)) 1] ,'k-.');
        hold off
        axis tight
        ylabel('$P_1(\vartheta)$', 'interpreter', 'latex')
    else
        figure(4)
        subplot(k*100 + 10 + k-5)
        semilogy(elGridEst,PvElEst(:,k));
        axis tight
        hold on
        semilogy(vTrue(k)*ones(2,1),[min(PvElEst(:,k)) 1] ,'k-.');
        hold off
        axis tight
        ylabel('$P_{7}(\vartheta)$', 'interpreter', 'latex')
    end
end
figure(2)
semilogy(azGrid,PuAz)
hold on
for k = 1:K
    semilogy(uTrue(k)*ones(2,1),[min(PuAz) 1] ,'k-.');
end
hold off
axis tight
xlabel('$\bar{\phi}$', 'interpreter', 'latex')
ylabel('$P_{\mathcal{U}}(\varphi)$', 'interpreter', 'latex')
elEst = (uEst + vEst2)/(2*cosd(Theta/2));
azEst = (vEst2 - cosd(Theta/2)*elEst)/sind(Theta/2);
[azTrue azEst ]
[elTrue elEst ]

完整的文档和Maltab代码放在了下面链接中,需要自取:

论文复现-V型稀疏阵列实现二维DOA估计

如果获取上述方式获取不到资源,请在评论区发表自己的邮箱地址(私信不回复),看到后会尽快发送给你。


     文章若有不当和不正确之处,还望理解与指出。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请联系博主删除。如有错误、疑问和侵权,欢迎评论留言联系作者,或者私信联系作者。

评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不去幼儿园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值