常規與MVDR波束造成對比—麥克風陣列系列(一)

閱讀原文還請移步個人知乎專欄:
https://www.zhihu.com/column/c_1287066237843951616


首先力薦鄢社鋒老師的書籍《優化陣列信號處理》,對於麥克風陣列信號處理的講解很是全面,對陣列的基本概念與優化方法講的非常透徹,並且最重要事情固然是全中文的啦,並且鄢社鋒是本領域的頂尖專家,比不少翻譯過來的外文書籍要好不少,值得閱讀。我的感受比陳老師的《Microphone Array Signal Processing》要更容易理解、更容易上手不少,由於這本書裏面包含了不少的案例用以對比演示。可是很遺憾,我並無找到鄢老師的相關代碼,因此乾脆就本身動手,看書的同時順帶實現了幾個。優化

因此,本文是後續系列文章的第一篇,記錄案例實現的過程與代碼,對於案例的解釋主要爲原書內容,本身進行了簡化,便於後續理解。本文講述第二章的案例2.二、2.3與2.4,對比試驗了常規波束造成與MVDR最優波束造成的波束圖、方位掃描圖與陣增益,以及本身實現的代碼。spa


例2.2 常規波束圖、常規波束掃描方位譜

考慮一個10元標準線列陣,假設一功率爲1的單頻信號從80^\circ 方向入射到基陣,不考慮噪聲,用以下公式計算數據協方差矩陣:翻譯

\bold R_x=E\left[ \bold x(n) \bold x^H(n) \right]

以基陣在10^\circ 方向的響應向量做爲導向向量,即\bar {\bold {a}}_s=\bold a\left( 80^\circ\right) ,採用式設計

\bold w_c=\bar {\bold a}_s/M

計算常規波束加權向量,用式3d

p\left( \theta \right)=\bold w^H \bold a\left( \theta \right),\theta\in\Theta

波束圖code

計算波束響應。將獲得的波束圖顯示於圖 2(a)中。圖中能夠看見波束主瓣指向80^\circ方位。這意味着該波束造成器對80^\circ方向到達的信號響應最大。附代碼實現,在圖片上方。orm

%% 2(a) 常規波束造成波束圖 代碼實現部分
clear; close all; clc;
c=340;       %聲速
f=1000;      %頻率
lambda = c / f;
k = 2*pi*f / c;
space = lambda/2;  %麥克風間距
M = 10;         %麥克風數量
theta_d = 80*pi/180; %入射角度
theta_angle = 0:0.1:180;
theta = theta_angle*pi/180;
Wc = exp(-1i*k*space*[0:M-1]*cos(theta_d)) / M;
B = zeros(size(theta));
%% 計算波束圖
for i = 1:length(theta)
    p = exp(1i*k*space*[0:M-1]*cos(theta(i)));
    B(i) = conj(Wc)*p';
end
B_db = 20*log10(B);
limit_dB = -50;
index = B_db < limit_dB;
B_db(index) = limit_dB; 
figure;
plot(theta_angle, B_db, 'linewidth', 1.5);
grid on;xlabel('方位(^o)'); ylabel('20lg(B)/dB');
title('波束圖');

2(a) 常規波束造成波束圖blog

波束掃描方位譜

進行波束掃描,即讓\theta 在\left[ -90^\circ,90^\circ \right] 內變化,取導向向量爲\bar {\bold {a}}_s=\bold a\left( \theta\right) 。用下式P\left( \theta \right)=\bold w^H\left( \theta \right)\bold R_x\bold w\left( \theta \right),\theta\in \Theta圖片

計算出波束掃描方位譜,顯示於圖 2(b)中。從圖中能夠看出,在 80^\circ位存在一個主峯值,該峯值表示在該方位存在一個信號。峯值大小爲 0dB,表示該方位波束輸出功率爲1,即該方向到達信號功率估計值爲1。同時注意到,雖然只有80^\circ方向存在信號,其餘方位沒有信號,但從方位譜上觀察,其餘方位的波束輸出功率並不爲0,好像是出現了「能量泄漏」。這是因爲波束旁瓣引發的,對於遠離信號方向的波束,因爲常規波束的旁瓣比較高,即便信號位於這些波束的旁瓣,旁瓣對該信號有必定的抑制,可是波束輸出並不爲0,所以表現爲在方位譜上非信號方向存在輸出功率。能夠預見,因爲常規波束較高的旁瓣,可能會由於強信號的「能量泄漏」而淹沒了其餘方位的弱信號,這一點在後文的仿真中將會看到。ci

比較圖2(a)與圖2(b)發現,指向信號方向的常規波束圖與常規波束掃描方位譜曲線徹底相同。這是在僅存在單位功率平面波信號時常規波束造成特有的現象,其餘波束造成方法不存在此現象。假設基陣接收到功率爲 0dB的空間白噪聲,信號功率增長到 30dB,即輸入信噪比 SNR_{in}=30dB。採用常規波束掃描獲得的方位譜如圖 2(c)所示,圖中指示在 80^\circ方向方位譜大約爲 30dB,表示該方位信號功率估計值約爲 30dB。代碼實現參考 2(b),再也不贅述。

%% 2(b) 常規波束掃描方位譜,代碼實現部分
p = exp(1i*k*space*[0:M-1]*cos(theta_d));
Rx = (p')*conj(p);
B = zeros(size(theta));
for i = 1:length(theta)
    Wcc = exp(-1i*k*space*[0:M-1]*cos(theta(i))) / M;
    B(i) = conj(Wcc)*Rx*Wcc';
end
B_db = 10*log10(B);
limit_dB = -50;
index = B_db < limit_dB;
B_db(index) = limit_dB; 
figure;
plot(theta_angle, B_db, 'linewidth', 1.5);
grid on;
xlabel('方位(^o)'); ylabel('10lg(P)/dB');
title('波束掃描方位譜');

2(b) 常規波束掃描方位譜

2(c) 常規波束掃描方位圖

波束陣增益

應用公式:G_c=\frac{\left| \bar{\bold a} ^H_s \bold a_s \right|^2}{\bar{\bold a} ^H_s \bold \rho _n\bold a_s}

計算掃描到各方位時波束陣增益,顯示於圖 2(d)中。圖中可見,該曲線形狀與圖2(a)中波束形狀相同,但高出10dB ,即爲最高陣增益。從該圖能夠知,當波束對準信號方向時,波束造成器的陣增益最大;波束觀察方位與信號方位存在誤差時,波束陣增益減少。只要方位誤差不太大(在半功率束寬之內),陣增益比最大值降低得並很少。

%% 2(d) 常規波束陣增益 代碼實現部分
p_ = exp(1i*k*space*[0:M-1]*cos(theta_d));
B = zeros(size(theta));
for i = 1:length(theta)
    p = exp(1i*k*space*[0:M-1]*cos(theta(i)));
    B(i) = (conj(p_) * p').^2 / (conj(p_)*p_');
end
B_db = 10*log10(B);
limit_dB = -50;
index = B_db < limit_dB;
B_db(index) = limit_dB; 
figure;
plot(theta_angle, B_db, 'linewidth', 1.5);
grid on;
xlabel('方位(^o)'); ylabel('10lg(G)/dB');
title('不一樣方向波束陣增益');

2(d) 常規波束陣增益


例2.3 MVDR波束造成

考慮一個10元標準線列陣,假設基陣接收噪聲是功率爲0dB 高斯白噪聲,即\bold R_n=\bold I 。一信噪比爲SNR=30dB 的單頻信號從 \theta_0=80^ \circ方向入射到基陣,用下式計算數據協方差矩陣 \bold R_x=E\left[ \bold x(n) \bold x^H(n) \right]

MVDR波束造成器波束圖

採用下式

\bold w_{MVDR}=\frac{\bold R_x^{-1} \bar{\bold a}_s}{\bar{\bold a}_s^H\bold R_x^{-1} \bar{\bold a}_s}

設計MVDR 波束造成器加權向量。圖 3(a)顯示了觀察方向分別爲\theta_s=80^\circ與 \theta_s=100^\circ的兩個波束圖。對於80^\circ 方向波束造成器,它至關於\beta=0 的狀況, 100^\circ方向平面波被視做干擾;對於100^\circ方向波束,100^\circ方向平面波爲指望信號,對應於\beta=1 的狀況。

對於80^\circ方向的波束圖,它在80^\circ方向的響應爲 1(0dB)。因爲MVDR波束造成器的特性,爲了使波束輸出功率最小,該波束在 100^\circ方向造成零點以最大限度抑制來自該方向的干擾。對於100^\circ方向的波束圖,假想導向向量與真實基陣響應向量相等,又因爲\bold R_n=\bold I,該MVDR波束造成器蛻化爲常規波束造成器,因此該波束圖與圖 2(a)中的常規波束圖相同。

%% 3(a) MVDR波束造成器波束圖,代碼實現
c=340;       %聲速
f=1000;      %頻率
lambda = c / f;
k = 2*pi*f / c;
space = lambda/2;  %麥克風間距
M = 10;         %麥克風數量
theta_angle = 0:0.1:180;
theta = theta_angle*pi/180;

theta_d1 = 80*pi/180; %入射角度
p_1 = exp(1i*k*space*[0:M-1]*cos(theta_d1))';
Rx = conj(p_1)*p_1'*10^(30/10) + eye(M)*10^(0/10);
Wc = Rx\p_1 / (conj(p_1')*inv(Rx)*p_1);
B = zeros(size(theta));

%% 計算波束圖 80度
for i = 1:length(theta)
    p = exp(1i*k*space*[0:M-1]*cos(theta(i)))';
    B(i) = conj(Wc')*p;
end
B_db = 20*log10(B);
limit_dB = -50;
index = B_db < limit_dB;
B_db(index) = limit_dB; 
figure;
plot(theta_angle, B_db, 'linewidth', 1.5);
hold on;

3(a) MVDR波束造成器波束圖

MVDR波束掃描方位譜

採用MVDR波束掃描估計方位譜,其中掃描方位間隔爲 0.1^\circ,獲得的方位譜顯示於圖 3(b)中。與圖 2(b)相比較可見,MVDR波束掃描獲得的方位譜峯值更尖銳。可見,MVDR波束掃描能提供比常規波束掃描較高的方位分辨能力。

%% 3(b) MVDR波束造成器波束掃描方位譜圖,代碼實現
theta_angle = 0:1:180;
theta = theta_angle*pi/180;

theta_d1 = 80*pi/180; %入射角度1
p_1 = exp(1i*k*space*[0:M-1]*cos(theta_d1))';
Rx = (p_1)*conj(p_1')*10^(30/10);
B = zeros(size(theta));

for i = 1:length(theta)
    p = exp(1i*k*space*[0:M-1]*cos(theta(i)))';
    Wcc = Rx\p / (conj(p')*(Rx\p));
    B(i) = conj(Wcc')*Rx*Wcc;
end
B_db = 10*log10(B);
limit_dB = -10;
index = B_db < limit_dB;
B_db(index) = limit_dB; 
figure;
plot(theta_angle, B_db, 'linewidth', 1.5);
hold on;
plot(80, 30, 'ro',  'linewidth', 1.5);
grid on;
legend('方位譜', '真實信號');
xlabel('方位(^o)'); ylabel('10lg(P)/dB');
title('波束掃描方位譜');

3(b) MVDR波束造成器波束掃描方位譜圖

MVDR波束造成器加權向量範數

圖 3(v)顯示了各掃描方位波束的加權向量範數 10lg\left( \left| \left| \bold w \right| \right|^2 \right) 。從圖中能夠看出,在波束觀察方向距離信號方向較遠時(例如本例中與信號間隔 10^\circ以上),波束造成器加權向量範數較小,接近於最小值。間隔較近時,隨着間隔減少,加權向量範數逐漸增長;而當波束方向剛好等於信號方向時,加權向量範數忽然降低到與間隔較遠的方位同一大小(由於此時波束造成器蛻化爲常規波束造成器)。

%% 3(c) MVDR波束造成器加權向量範數,代碼實現
theta_angle = 0:0.1:180;
theta = theta_angle*pi/180;

theta_d1 = 90*pi/180; %入射角度1
p_1 = exp(1i*k*space*[0:M-1]*cos(theta_d1))';
Rx = (p_1)*conj(p_1')*10^(30/10);
B = zeros(size(theta));

for i = 1:length(theta)
    p = exp(1i*k*space*[0:M-1]*cos(theta(i)))';
    Wcc = Rx\p / (conj(p')*(Rx\p));
    B(i) = norm(Wcc)*norm(Wcc);
end
B_db = 10*log10(B);
limit_dB = -50;
index = B_db < limit_dB;
B_db(index) = limit_dB; 
figure;
plot(theta_angle, B_db, 'linewidth', 1.5);
grid on;
xlabel('方位(^o)'); ylabel('10lg(w^2)/dB');
title('加權向量範數');

3(c) MVDR波束造成器加權向量範數


例2.4 兩信號源狀況下MVDR與常規波束造成器的比較

考慮一個 10元標準線列陣,基陣接收噪聲是功率爲 0dB高斯白噪聲,兩個信噪比分別爲 15dB與 30dB的單頻信號分別從80^\circ 與 100^\circ方向入射到基陣。

分別採用常規波束造成與MVDR波束造成掃描,獲得的方位譜分別如圖4(a) 與圖4(b) 所示。

4(a) 兩信號源常規波束造成器

4(b) 兩信號源MVDR波束造成器


參考資料

一、《優化陣列信號處理》,鄢社鋒

相關文章
相關標籤/搜索