diff --git a/_config.next.yml b/_config.next.yml index d8d718d..010e0b3 100644 --- a/_config.next.yml +++ b/_config.next.yml @@ -531,7 +531,7 @@ pdf: # Mermaid tag mermaid: - enable: false + enable: true # Available themes: default | dark | forest | neutral theme: light: forest diff --git a/_config.yml b/_config.yml index 3dd107e..f3680a5 100644 --- a/_config.yml +++ b/_config.yml @@ -55,6 +55,8 @@ highlight: tab_replace: ' ' wrap: true hljs: false + exclude_languages: + - mermaid prismjs: enable: false preprocess: true diff --git a/source/_posts/2023-04-20-josh-oap-part-1-3.md b/source/_posts/2023-04-20-josh-oap-part-1-3.md index 69617d6..9e20781 100644 --- a/source/_posts/2023-04-20-josh-oap-part-1-3.md +++ b/source/_posts/2023-04-20-josh-oap-part-1-3.md @@ -75,6 +75,51 @@ $$\begin{equation} ![图 1-3-2 用 dB 表示 $\left|\boldsymbol{\varUpsilon}(\psi)\right|$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-20-josh-oap-part-1-3/2023-04-20-josh-oap-part-1-3-020-FrequencyWavenumberResponseFunctionInDB.svg){width=1000px} +{% note primary MATLAB Code %} + +``` matlab fig2_1516.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.15 & 2.16 +% Beampattern of uniformly weighted linear array +% Xiaomin Lu +% Updated 1/5/99 +% Last updated by K. Bell 7/22/01, 10/4/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +N = 11; % 11 elements +% Note, Eq. (2.92) is in fact the standard Dirichlet function +% beam = diric(psi, N); +% if you don't have the signal processing toolbox, this does the same thing +psi = (-5:1/400:5)*pi; +beam = zeros(1,length(psi(:))); +y=sin(.5*psi); +i=find(abs(y)>1e-12); % set where x is not divisible by 2 pi +j=1:length(psi(:)); +j(i)=[]; % complement set +beam(i)=sin((N/2)*psi(i))./(N*y(i)); +beam(j)=sign(cos(psi(j)*((N+1)/2))); + +plot(psi/pi, beam) +grid +xlabel('$\psi/\pi$','Interpreter','latex') +ylabel('Frequency wavenumber response function') +axis([-5 5 -0.4 1]) +set(gcf,'Position',[0 0 1000 600]) +figure +beam = 20*log10(abs(beam)); +plot(psi/pi,beam); +xlabel('$\psi/\pi$','Interpreter','latex') +ylabel('Frequency wavenumber response function (dB)') +axis([-5 5 -25 0]) +grid +set(gcf,'Position',[0 0 1000 600]) +``` + +{% endnote %} + 若不指定 $\boldsymbol{w}$ 的类型,则 $\boldsymbol{\varUpsilon}_\psi(\psi)$ 是复数,所以相位也应该画出来。但是,均匀加权线阵具有对称性,因此得到的频率-波数响应是实函数。   也可以用 $k_z$ 来表示频率-波数响应 @@ -121,10 +166,138 @@ $$\begin{equation} ![图 1-3-3 在极坐标系中画出 $B_\theta(\theta)$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-20-josh-oap-part-1-3/2023-04-20-josh-oap-part-1-3-030-PloarPlotOfBeamPatternInAngleSpace.svg){width=800px} +{% note primary MATLAB Code %} + +``` matlab fig2_17.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.17 +% Polar plot of B (Theta) +% Lillian Xu 1/5/99 +% Updated by K. Bell 6/25/01 +% Functions called: polardb +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +clear all +close all + +N = 11; % Elements in array +d = 0.5; % spacing wrt wavelength +beamwidth = 2/(N*d); % null-to-null (LL BW is half this) +D=d*(-(N-1)/2:1:(N-1)/2); % element locations +ang = pi*(-1:0.001:1); +u = cos(ang); +n2=size(u,2); +AS = exp(-1i*2*pi*cos(90/180*pi)*D'); % BP points to 90 (broadside) +Au = exp(-1i*2*pi*D'*u); +B = real(AS'*Au)/N; +G = 20*log10((abs(B))); + +h=polardb(ang,G,-40); +``` + +{% endnote %} + ![图 1-3-4 $d = \lambda/2, N=10$,线阵的 $\left|\boldsymbol{\varUpsilon}_\psi(\psi)\right|$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-20-josh-oap-part-1-3/2023-04-20-josh-oap-part-1-3-040-AbsOfFWRFForALinearArray.svg){width=1000px} +{% note primary MATLAB Code %} + +``` matlab fig2_18.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.18 +% beam patterns in different spaces +% Lillian Xiaolan Xu +% Last updated 09/07/2000 +% updated by K. Bell 7/22/01, 10/4/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +N = 10; +n = (-(N-1)/2:(N-1)/2).'; +psi = pi*(-3:0.001:3); +w = 1/N*[ones(N,1)]; +d = 1/2; +vv = exp(1i*2*d*n*psi); +B = (abs(w'*vv)); + +u1=-1; +u2=3; +y1=0; +y2=1; + +subplot(4,1,1) +plot(-psi/d,B); +hold on +axis([u1*pi/d u2*pi/d y1 y2]) +set(gca,'XTick',[-pi/d 0 pi/d 2*pi/d 3*pi/d]) +set(gca,'YTick',[0 0.5 1]) +set(gca,'XTickLabel',{'$-\pi/d$';'$0$';'$\pi/d$';'$2\pi/d$';'$3\pi/d$'}, ... + 'TickLabelInterpreter','latex') + +grid on +point=0.8; +point_up=0.84; +point_down=0.76; +plot([-pi/d pi/d],[point point],'--') +plot([-1*pi/d -0.9*pi/d],[point point_up]) +plot([-1*pi/d -0.9*pi/d],[point point_down]) +plot([0.9*pi/d pi/d],[point_up point]) +plot([0.9*pi/d pi/d],[point_down point]) +text(-0.3*pi/d,1.2,'Visible region') + +plot([pi/d 3*pi/d],[point point],'--') +plot([pi/d 1.1*pi/d],[point point_up]) +plot([pi/d 1.1*pi/d],[point point_down]) +plot([2.9*pi/d 3*pi/d],[point_up point]) +plot([2.9*pi/d 3*pi/d],[point_down point]) +text(1.7*pi/d,1.2,'Virtual region') +legend({'$k_z$-space'},'Interpreter','latex') + +subplot(4,1,2) +plot(psi,B); +hold on +axis([u1*pi u2*pi y1 y2]) +set(gca,'XTick',[-pi 0 pi 2*pi 3*pi]) +set(gca,'YTick',[0 0.5 1]) +set(gca,'XTickLabel',{'$-\pi$';'$0$';'$\pi$';'$2\pi$';'$3\pi$'}, ... + 'TickLabelInterpreter','latex') + +grid on +legend({'$\psi$-space'},'Interpreter','latex') + +subplot(4,1,3) +plot(psi/pi,B); +hold on +axis([u1 u2 y1 y2]) +set(gca,'XTick',[-1 0 1 2 3]) +set(gca,'YTick',[0 0.5 1]) +grid on +legend({'$u$-space'},'Interpreter','latex') + +theta = -180:0.1:360; +vv = exp(1i*2*d*n*pi*cos(theta/180*pi)); +B = (abs(w'*vv)); +subplot(4,1,4) +plot(theta,B); +hold on +axis([-180 180 y1 y2]) +set(gca,'XTick',[-180 -90 0 90 180]) +set(gca,'YTick',[0 0.5 1]) +set(gca,'XTickLabel',{'$180^\circ$';'$90^\circ$';'$0^\circ$';'$-90^\circ$'; ... + '$-180^\circ$'},'TickLabelInterpreter','latex') + +grid on +legend({'$\theta$-space'},'Interpreter','latex') + +set(gcf,'Position',[0 0 800 800]) +``` + +{% endnote %} + {% note info %} 虽然以上例子比较简单,但是可以用来展示线性阵列的一些重要特征。 @@ -151,6 +324,76 @@ $$\begin{equation} ![图 1-3-5 波束方向图的主波束](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-20-josh-oap-part-1-3/2023-04-20-josh-oap-part-1-3-050-MainLobeOfBeamPattern.svg){width=700px} +{% note primary MATLAB Code %} + +``` matlab fig2_19.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.19 +% Main lobe of beam pattern +% Kristine Bell +% Last updated 6/4/01, 10/4/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% bp_sect - plots conventional bp with sector + +clear all +% close all +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Uniform Linear Array +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +N = 10; % Elements in array +d = 0.5; % spacing wrt wavelength +beamwidth = 2/(N*d); % null-to-null (LL BW is half this) +D=d*(-(N-1)/2:1:(N-1)/2); % element locations +u = -0.45:0.01:0.45; +AS = exp(-1i*2*pi*D'*0); % BP points to 0 +Au = exp(-1i*2*pi*D'*u); +B = real(AS'*Au)/N; % BP + +h=plot(u,B,'-'); +set(h,'LineWidth',1.5) +hold on +% HPBW +I=find(B>=0.707); +plot([u(min(I)-1) u(max(I)+1)],[B(min(I)-1) B(max(I)+1)],'-') +plot(u(min(I)-1)*[1 1],B(min(I)-1)*[1 1]+0.03*[-1 1],'-') +plot(u(max(I)+1)*[1 1],B(max(I)+1)*[1 1]+0.03*[-1 1],'-') +plot([0.03 0.13],[0.72 0.845],'-') +text(0.155,0.84,'$\Delta u_1 = $HPBW','Interpreter','latex'); + +% BW-NN +plot([-0.2 0.2],[-0.3 -0.3],'-') +plot(-0.2*[1 1],-0.3*[1 1]+0.03*[-1 1],'-') +plot(0.2*[1 1],-0.3*[1 1]+0.03*[-1 1],'-') +text(-0.05,-0.35,'$\Delta u_2 = BW_{NN}$','Interpreter','latex'); + +% axes +plot([-1 1 ],[0 0],'-') +plot([0 0],[-0 1.1],'-') + +% tick marks +plot(-0.4*[1 1],0.03*[-1 1]) +plot(-0.2*[1 1],0.03*[-1 1]) +plot(0.2*[1 1],0.03*[-1 1]) +plot(0.4*[1 1],0.03*[-1 1]) + +yy = -0.1; +%tick labels +text(-0.45,yy,'$-2\frac{\lambda}{ND}$','Interpreter','latex'); +text(-0.21,yy,'$-\frac{\lambda}{ND}$','Interpreter','latex'); +text(-0.005,yy,'0','Interpreter','latex'); +text(0.18,yy,'$\frac{\lambda}{ND}$','Interpreter','latex'); +text(0.38,yy,'$2\frac{\lambda}{ND}$','Interpreter','latex'); + +text(0.01,1.1,'$B(u)$','Interpreter','latex') +hold off +axis([-0.42 0.42 -0.4 1.2]) + +set(gca,'Visible','off') +``` + +{% endnote %} +   3dB 波束宽度是波束宽度的一个度量。定义为对应 $\left| B_u(u) \right|^2 = 0.5$ 或 $\left| B_u(u) \right| = 1/\sqrt{2}$ 的点。可以通过令波束方向图 $B_u(u)$(式 $\eqref{BeamPatternOfUWLAInDirectionCosineDomain}$)等于 $1/\sqrt{2}$,来求出 $u$ 空间的半功率点。对于 $N\geqslant 10$,通过解下面的方程可以得到一个很好的近似: $$\begin{equation} @@ -295,6 +538,55 @@ $$\begin{equation} ![图 1-3-6 阵元间距对波束方向图的影响:(a) $d=\lambda/4$;(b) $d=\lambda/2$;(c) $d=\lambda$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-20-josh-oap-part-1-3/2023-04-20-josh-oap-part-1-3-060-%20EffectOfElementSpacingOnBeamPattern.svg){width=1000px} +{% note primary MATLAB Code %} + +``` matlab fig2_20.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.20 +% Effect of element spacing on beam pattern +% Xin Zhang +% Lillian Xu updated 09/2000 +% updated by K. Bell 7/22/2001, 10/4/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +N = 10; +n = (-(N-1)/2:(N-1)/2).'; +psi = pi*(-3:0.001:3); +w = 1/N*[ones(N,1)]; +d = [1/4 1/2 1]; + +figure +for k =1:length(d) + vv = exp(1i*2*d(k)*n*psi); + B(k,:) = 20*log10(abs(w'*vv)); + subplot(3,1,k) + plot(psi/pi,B(k,:)); + hold on + plot([-1 -1],[-25 0],'--'); + plot([1 1],[-25 0],'--'); + axis([-3 3 -25 5]) + set(gca,'YTick',[-25 -20 -15 -10 -5 0]) + grid on + xlabel('$u$','Interpreter','latex') + if k == 1 + plot([-1 1],[2.5 2.5]) + plot([-1 -0.9],[2.5 0.5]) + plot([-1 -0.9],[2.5 4.5]) + plot([0.9 1],[0.5 2.5]) + plot([0.9 1],[4.5 2.5]) + text(-0.4,7,'Visible region') + end + hold off +end + +set(gcf,'Position',[0 0 800 600]) +``` + +{% endnote %} +   在[图 1-3-6](#fig.1-3-6) 中,针对多种 $d/\lambda$ 的值,画出了 $\left| \boldsymbol{\varUpsilon}_u(u) \right|$。图中说明了“栅瓣”这个重要的概念,即和主波束一样高的波瓣。栅瓣发生在当波束方向图 $B_\psi(\psi)$(式 $\eqref{BeamPatternOfUWLAInWaveNumberDomain}$)中的分子和分母均为零的时候。栅瓣出现的间隔为 $$\begin{equation} diff --git a/source/_posts/2023-04-22-josh-oap-part-1-4.md b/source/_posts/2023-04-22-josh-oap-part-1-4.md index 2fbe76e..5bb9721 100644 --- a/source/_posts/2023-04-22-josh-oap-part-1-4.md +++ b/source/_posts/2023-04-22-josh-oap-part-1-4.md @@ -130,6 +130,48 @@ $$\begin{equation} ![图 1-4-2 阵列调向对栅瓣的影响:$N=10$,(a) $d=2\lambda/3, \bar\theta = 30^\circ$;(b) $d=\lambda/2, \bar\theta = 90^\circ$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-22-josh-oap-part-1-4/2023-04-22-josh-oap-part-1-4-020-%20EffectOfSteeringOnTheGratingLobes.svg){width=1000px} +{% note primary MATLAB Code%} + +``` matlab fig2_22.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.22 +% Effect of element spacing on beam pattern +% Lillian Xu +% Last updated by K. Bell 7/22/01, 10/4/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +N=10; +n=(-(N-1)/2:(N-1)/2)'; +w=ones(N,1)/N; +u=-3:0.01:3; + +d=[2/3 1/2]; +theta=[30 90]; +figure +s = ['(a)';'(b)']; +for m=1:2 + beam=(w.*exp(1i*2*pi*n*d(m)*sin(theta(m)/180*pi)))' ... + *exp(1i*2*pi*n*d(m)*u); + subplot(2,1,m); + plot(u,20*log10(abs(beam))); + hold on + axis([-3 3 -25 5]) + ylabel('Beam pattern (dB)') + xlabel('$u$','Interpreter','latex') + text(0,-32,s(m,:),'HorizontalAlignment','center') + % title(['N=',num2str(N),', d=',num2str(d(m),2),' lambda, theta-Bar=', ... + % num2str(theta(m)),' degrees']) + grid on +end + +set(gcf,'Position',[0 0 800 600]) +``` + +{% endnote %} +   通常,为了避免栅瓣进入可视区域,需要有 $$\begin{equation} @@ -161,6 +203,38 @@ $$\begin{equation} ![图 1-4-3 10 阵元均匀阵列($d = \lambda/2$)扫描到 30°(和正侧向夹角为 60°)时的波束方向图](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-22-josh-oap-part-1-4/2023-04-22-josh-oap-part-1-4-030-BeamPatternFor10ElementUniformArrayScannedTo30Degree.svg){width=800px} +{% note primary MATLAB Code %} + +``` matlab fig2_23.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.23 +% Beam pattern for 10-element uniform array (d=lambda/2) +% scanned to 30 degrees (60 degrees from broadside) +% Xin Zhang 1/20/99 +% Last updated by K. Bell 6/25/01 +% Functions called: polardb +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +N = 10; +n = (-(N-1)/2:(N-1)/2).'; +theta = pi*(-1:0.001:1); +u = cos(theta); +d = 1/2; +vv = exp(1i*2*pi*d*n*u); +theta_T = 30/180*pi; +w = 1/N*ones(N,1).*exp(1i*n*pi*cos(theta_T)); +B = w'*vv; +B = 10*log10(abs(B).^2); +figure +h=polardb(theta,B,-40); +hold off +``` + +{% endnote %} +   为了研究在 $\theta$ 空间的半功率带宽情况,我们利用式 $\eqref{SteeredBeamPatternInAngleDomain}$ 和 [$N \geqslant 10$ 时半功率带宽的估算式][],可以得到在 $u$ 空间的左右半功率点分别为 $$\begin{equation} @@ -196,6 +270,61 @@ $$\begin{equation} \label{HPBWOfUWLA} ![图 1-4-4 HPBW 和阵列调向角的关系:标准线阵,采用均匀加权](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-22-josh-oap-part-1-4/2023-04-22-josh-oap-part-1-4-040-HPBWVersusSteeringAngleStandardUWLA.svg){width=1000px} +{% note primary MATLAB Code %} + +``` matlab fig2_24.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.24 +% HPBW versus steering angle +% Lillian Xu +% Modified by Xin Zhang +% Last updated by L. Xu 11/30/00, K. Bell 7/22/01, 10/4/01, 10/17/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all; +close all; + +Nd_set=[1000:-5:700 700:-0.5:200 200:-0.05:20 15:-0.005:1]; +theta_deg=[2.5 5 10 20 30 45 90]; +%theta_deg=[2.5 5 10 20 30 45 60 90]; +theta_set=theta_deg*pi/180; +figure +for num=1:size(theta_set,2) + theta=theta_set(num); + bw=0; + for num1=1:size(Nd_set,2) + Nd=Nd_set(num1); + r=cos(theta)+0.443/Nd; + if abs(r)<=1 + bw(num1)=acos(r)-acos(cos(theta)-0.443/Nd); + end + end + loglog(Nd_set(1:size(bw,2)),abs(bw*180/pi)); + hold on + rightpoint=abs(bw(1)*180/pi); + text(1040,rightpoint,[num2str(theta_deg(num)),'$^\circ$'],Interpreter='latex'); % used to be 7 +end +axis([1 1000 0.04 100]) +xlabel('$Nd/\lambda$','Interpreter','latex') +ylabel('3-dB beamwidth in degrees') + +scanlimit=-acos(1-2*0.443./Nd_set); +loglog(Nd_set,abs(scanlimit*180/pi),'--') + +Endfire = 2*acos(1-0.433./Nd_set); +loglog(Nd_set,abs(Endfire*180/pi)) +rightpoint=abs(Endfire(1)*180/pi); +text(1040,rightpoint,'$\theta=0^\circ$',Interpreter='latex'); % used to be 7 +%title('HPBW versus steering angle: standard linear array with uniform weighting') +text(12,35,'Endfire') +text(12,14.4,'Scan limit') +text(12,1.8,'Broadside') +grid on; +set(gcf,'Position',[0 0 800 500]) +``` + +{% endnote %} +   当波束调向到正侧向的附近($\bar{\theta}_\mathrm{T}$ 的值很小)且 $Nd \gg \lambda$ 时,$\theta_\mathrm{H}$ 很小,利用小角度展开形式得到 $$\begin{equation} \label{HPBWWithSmallAngle} @@ -220,6 +349,38 @@ $$\begin{equation} \label{HPBWOfEndfireUWLA} ![图 1-4-6 一个标准 10 阵元线阵。采用均匀幅度加权时在端射时的波束方向图](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-22-josh-oap-part-1-4/2023-04-22-josh-oap-part-1-4-060-BeamPatternOfStandard10ElementUWLAAtEndfire.svg){width=800px} +{% note primary MATLAB Code %} + +``` matlab fig2_26.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 2.26 +% Beam pattern of a standard 10-element linear array +% with uniform amplitude weighting at end-fire +% Xin Zhang 1/20/99 +% Last updated by K. Bell 6/25/01 +% Functions called: polardb +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +N = 10; +n = (-(N-1)/2:(N-1)/2).'; +theta = pi*(-1:0.001:1); +u = cos(theta); +d = 1/2; +vv = exp(1i*2*pi*d*n*u); +theta_T = 0/180*pi; +w = 1/N*ones(N,1).*exp(1i*n*pi*cos(theta_T)); +B = w'*vv; +B = 10*log10(abs(B).^2); +figure +h=polardb(theta,B,-40); +hold off +``` + +{% endnote %} + 可以把式 $\eqref{HPBWOfEndfireUWLA}$ 写成 $$\begin{equation} diff --git a/source/_posts/2023-06-19-josh-oap-part-2-1.md b/source/_posts/2023-06-19-josh-oap-part-2-1.md index b0fbd20..b74dfd9 100644 --- a/source/_posts/2023-06-19-josh-oap-part-2-1.md +++ b/source/_posts/2023-06-19-josh-oap-part-2-1.md @@ -21,7 +21,7 @@ abbrlink: 61f0754c date: 2023-06-19 16:25:26 --- -  下面主要研究对每个传感器输出进行加权的技术,以获得具有理想性质的频率-波数响应和波束方向图。加权的过程在一些文献中也称为锐化 (tapering) 或赋形 (shading) 。许多阵列加权技术等价于时间序列谱分析中的加窗或锐化 (Taper) 技术。 +  谱加权(Spectral Weighting)技术主要研究对如何每个传感器输出进行加权,以获得具有理想性质的频率-波数响应和波束方向图。加权的过程在一些文献中也称为锐化 (tapering) 或赋形 (shading) 。许多阵列加权技术等价于时间序列谱分析中的加窗或锐化 (Taper) 技术。   对于一个阵元间距小于或等于 $\lambda/2$ 的线阵,由于不需要考虑栅瓣和空域混迭,可以直接应用连续函数的傅里叶变换理论对权重和频率-波数响应之间存在的傅里叶变换关系进行分析。本文关注线性阵列,讨论如何在降低旁瓣的同时使主瓣宽度的增长最小(最小化方向性损失),将尝试不同的权值矢量,并分析它们的性能。 @@ -111,6 +111,50 @@ $$\begin{equation} ![图 2-1-1 均匀加权和 Cosine 加权的波束方向图: $N = 11$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-06-19-josh-oap-part-2-1/2023-06-19-josh-oap-part-2-1-010-BeamPatternForUniformAndCosineWeighting.svg){width=700px} +{% note primary MATLAB Code %} + +``` matlab fig3_01.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 3.1 +% Cosine weighting: Array beam patterns +% Kristine Bell +% Modified by Xin Zhang 3/17/99 +% Lillian 04/16/2001, K. Bell 7/20/01, K. Bell 9/30/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +M=11; +d=0.5; % sensor spacing wrt wavelength +D = (-(M-1)/2:1:(M-1)/2)*d; % sensor positions in wavelengths +% weights, normalized so that w(0)=1 +W_unf = ones(1,M); +W_cos = cos(pi*D*2/M); + +% Beampatterns +u = 0:0.001:1; +A = exp(-1i*2*pi*D.'*u); +G_unf = W_unf*A; +G_unf = G_unf/(max(abs(G_unf))); +G_cos = W_cos*A; +G_cos = G_cos/(max(abs(G_cos))); +figure +% array only +clf +plot(u,20*log10(abs(G_unf)),'--') +hold on +plot(u,20*log10(abs(G_cos)),'-') +hold off +axis([0 1 -80 0]) +%title([int2str(M) ' element array']) +h=legend('Uniform','Cosine'); +xlabel('$u$','Interpreter','latex') +ylabel('Beam pattern (dB)') +``` + +{% endnote %} + # 3. 升 Cosine 加权   可以把矩形均匀加权和 Cosine 加权组合起来,获得两种加权方法一些理想性质的组合。对应的阵列加权为 @@ -129,7 +173,7 @@ $$\begin{equation}   在[图 2.1.2](#fig.2-1-2) 中给出了 $p = 0.31, 0.17, 0$ 时的升 Cosine 加权的波束方向图。当 $p$ 减小时,第一旁瓣的高度减小,主波束宽度增加。波束方向图参数如下: -| $p$ | HPBW | $BW_{NN}$ | 第一旁瓣高度 | $D_N$[^1] | +| $p$ | HPBW | $BW_{NN}$ | 第一旁瓣高度 | $D_N$ | | :--: | :--: | :--: | :--: | :--: | | 0.31 | $1.03 \displaystyle\frac{2}{N}$ | $2.50 \displaystyle\frac{2}{N}$ | $-20.0 \text{dB}$ | $0.928$ | | 0.17 | $1.09 \displaystyle\frac{2}{N}$ | $3.70 \displaystyle\frac{2}{N}$ | $-22.0 \text{dB}$ | $0.886$ | @@ -139,6 +183,52 @@ $$\begin{equation} ![图 2-1-2 升 Cosine 加权的波束方向图: $N = 11$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-06-19-josh-oap-part-2-1/2023-06-19-josh-oap-part-2-1-020-BeamPatternForRaisedCosineWeighting.svg){width=700px} +{% note primary MATLAB Code %} + +``` matlab fig3_02.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 3.2 +% Raised cosine weighting function +% Kristine Bell +% Modified by Xin Zhang 3/17/99 +% Lillian Xu 04/16/2001, K. Bell 7/20/01, 9/30/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +M=11; +d=0.5; % sensor spacing wrt wavelength +D = (-(M-1)/2:1:(M-1)/2)*d; % sensor positions in wavelengths + +% weights, normalized so that w(0)=1 +p=[0;0.17;0.31;1]; +W_rcos = p*ones(1,M)+(ones(4,1)-p)*cos(pi*D*2/M); + +% Beampatterns +u = 0:0.001:1; +c=p+(ones(4,1)-p)*2/pi; +A = exp(-1i*2*pi*D.'*u); +G_rcos = W_rcos*A; +for m=1:4 + G_rcos(m,:) = G_rcos(m,:)/(max(abs(G_rcos(m,:)))); +end + +figure +clf +plot(u,20*log10(abs(G_rcos(3,:))),'-.') +hold on +plot(u,20*log10(abs(G_rcos(2,:))),'--') +plot(u,20*log10(abs(G_rcos(1,:))),'-') +hold off +axis([0 1 -80 0]) +h=legend({'$p=0.31$','$p=0.17$','$p=0$'},'Interpreter','latex'); +xlabel('$u$','Interpreter','latex') +ylabel('Beam pattern (dB)') +``` + +{% endnote %} +   至此,我们已经可以使 HPBW 变窄,并使得第一旁瓣比均匀分布的情况要低得多。 # 4. Cosine$^m$ 加权 @@ -157,7 +247,7 @@ $$\begin{equation}   $m=2$ 时的加权有时称为是 Hann 加权[^2]。同样,波束方向图可以利用 Cosine 函数的指数形式来计算。波束方向图在[图 2.1.3](#fig.2-1-3) 中给出。当 $m$ 增加时,旁瓣减小,但是主波束变宽。波束方向图的参数为: -| $m$ | HPBW | $BW_{NN}$ | 第一旁瓣高度 | $D_N$[^1] | +| $m$ | HPBW | $BW_{NN}$ | 第一旁瓣高度 | $D_N$ | | :--: | :--: | :--: | :--: | :--: | | 2 | $1.44 \displaystyle\frac{2}{N}$ | $4 \displaystyle\frac{2}{N}$ | $-31.4 \text{dB}$ | $0.667$ | | 3 | $1.66 \displaystyle\frac{2}{N}$ | $5 \displaystyle\frac{2}{N}$ | $-39.4 \text{dB}$ | $0.576$ | @@ -167,6 +257,56 @@ $$\begin{equation} ![图 2-1-3 Cosine$^m$ 加权的波束方向图: $N = 11$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-06-19-josh-oap-part-2-1/2023-06-19-josh-oap-part-2-1-030-BeamPatternForCosineMWeighting.svg){width=700px} +{% note primary MATLAB Code %} + +``` matlab fig3_03.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 3.3 +% Cosine^m weighting: m = 2,3,and 4 +% Kristine Bell +% Modified by Xin Zhang 3/17/99 +% Lillian Xu 04/16/2001, K. Bell 7/20/01, 9/30/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +clear all +close all + +M=11; +d=0.5; % sensor spacing wrt wavelength +D = (-(M-1)/2:1:(M-1)/2)*d; % sensor positions in wavelengths + +% weights, normalized so that w(0)=1 +W_cos2 = cos(pi*D*2/M).^2; +W_cos3 = cos(pi*D*2/M).^3; +W_cos4 = cos(pi*D*2/M).^4; + +% Beampatterns + +u = 0:0.001:1; +A = exp(-1i*2*pi*D.'*u); +G_cos2 = W_cos2*A; +G_cos2 = G_cos2/(max(abs(G_cos2))); +G_cos3 = W_cos3*A; +G_cos3 = G_cos3/(max(abs(G_cos3))); +G_cos4 = W_cos4*A; +G_cos4 = G_cos4/(max(abs(G_cos4))); + +figure +clf +plot(u,20*log10(abs(G_cos2)),'--') +hold on +plot(u,20*log10(abs(G_cos3)),'-') +plot(u,20*log10(abs(G_cos4)),'-.') +hold off +axis([0 1 -80 0]) +h=legend({'$m=2$','$m=3$','$m=4$'},'Interpreter','latex'); +set(h,'Fontsize',12) +xlabel('$u$','Interpreter','latex') +ylabel('Beam pattern (dB)') +``` + +{% endnote %} + # 5. 升 Cosine 平方加权   升 Cosine 平方系列的加权为 @@ -200,12 +340,139 @@ $$\begin{equation} B_u(u) = 0.54 \frac{\sin\left(\displaystyle\frac{N\pi u}{2}\right)}{\sin\left(\displaystyle\frac{\pi u}{2}\right)} + 0.23 \left[ \frac{\sin\left( \displaystyle\frac{N\pi}{2} \left( u - \frac{2}{N} \right) \right)}{\sin\left( \displaystyle\frac{\pi}{2} \left( u - \frac{2}{N} \right) \right)} + \frac{\sin\left( \displaystyle\frac{N\pi}{2} \left( u + \frac{2}{N} \right) \right)}{\sin\left( \displaystyle\frac{\pi}{2} \left( u + \frac{2}{N} \right) \right)} \right] \end{equation}$$ -  [图 2.1.4](#fig.2-1-4) 给出了 Hamming 加权、Hann 加权和 Blackman-Harris 加权的波束方向图。第一个零点的位置在 $u = 4/N$,第一个非零旁瓣的高度为 $-39.5\text{dB}$。加权有步进不连续性,使得旁瓣的衰减渐近为 $O(1/n)$。但是,第一个旁瓣被完全对消掉了,剩余的旁瓣都很低,尽管它们的衰减比较慢。而且,注意到 Hamming 窗的波束宽度小于 Hann 加权的波束宽度,且第一旁瓣更低。这是一般变化趋势的一个例外情况。 +  [图 2.1.4](#fig.2-1-4) 给出了 Hamming 加权、Hann 加权和 Blackman-Harris 加权的波束方向图。第一个零点的位置在 $u = 4/N$,第一个非零旁瓣的高度为 $-39.5\text{dB}$。由于加权具有步进不连续性(step discontinuity),旁瓣的衰减渐近为 $O(1/n)$。但是,第一个旁瓣被完全对消掉了,尽管剩余的旁瓣衰减得比较慢,它们的幅度都不是很高。而且注意到 Hamming 窗的波束宽度小于 Hann 加权的波束宽度,且第一旁瓣更低。 ![图 2-1-4 Hann 加权、Hamming 加权和 Blackman-Harris 加权的波束方向图: $N = 11$](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-06-19-josh-oap-part-2-1/2023-06-19-josh-oap-part-2-1-040-BeamPatternForHannHammingAndBlackmanHarrisWeighting.svg){width=700px} +{% note primary MATLAB Code %} + +``` matlab fig3_04.m +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figure 3.4 +% Beam patterns for Hann, Hamming, and Blackman-Harris +% Kristine Bell +% Modified by Xin Zhang 3/17/99 +% Lillian Xu 04/16/2001, K. Bell 7/20/01, 9/30/01 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hann, Hamming, Blackman-Harris +% M-element array, d=lambda/2 + +clear all +close all + +M=11; +d=0.5; % sensor spacing wrt wavelength +D = (-(M-1)/2:1:(M-1)/2)*d; % sensor positions in wavelengths + +% weights, normalized so that w(0)=1 +W_Hann = 0.5*(ones(1,M)+cos(2*pi*D*2/M)); +W_Hamm = 0.54*ones(1,M)+0.46*cos(2*pi*D*2/M); +W_BH = 0.42*ones(1,M)+0.5*cos(2*pi*D*2/M)+0.08*cos(4*pi*D*2/M); + +% Beampatterns + +u = 0:0.001:1; +A = exp(-1i*2*pi*D.'*u); +G_Hann = W_Hann*A; +G_Hann = G_Hann/(max(abs(G_Hann))); +G_Hamm = W_Hamm*A; +G_Hamm = G_Hamm/(max(abs(G_Hamm))); +G_BH = W_BH*A; +G_BH = G_BH/(max(abs(G_BH))); + +figure +clf +plot(u,20*log10(abs(G_Hann)),'--') +hold on +plot(u,20*log10(abs(G_Hamm)),'-') +plot(u,20*log10(abs(G_BH)),'-.') +hold off +axis([0 1 -80 0]) +h=legend('Hann','Hamming','Blackman-Harris'); +xlabel('$u$','Interpreter','latex') +ylabel('Beam pattern (dB)') +``` + +{% endnote %} + +# 7. Blackman-Harris 加权 + +  Blackman-Harris 加权把加权过程扩展到了更高阶谐波的情况,并在前两个旁瓣的峰值位置上放置了零点。加权函数为 + +$$\begin{equation} + w(\tilde{n}) = 0.42 + 0.5 \cos\left( \frac{2\pi \tilde{n}}{N} \right) + 0.08 \cos\left( \frac{4\pi \tilde{n}}{N} \right), \quad \tilde{n} = -\frac{N-1}{2}, \cdots, \frac{N-1}{2} +\end{equation}$$ + +对应的波束方向图是多个常规波束方向图的和,已在[图 2.1.4](#fig.2-1-4) 中给出 + +$$\begin{equation} + \begin{aligned} + B_u(u) =& 0.42 \frac{\sin\left( \displaystyle\frac{N\pi u}{2} \right)}{\sin\left( \displaystyle\frac{\pi u}{2} \right)} + 0.25 \left[ \frac{\sin\left( \displaystyle\frac{N\pi}{2} \left( u - \frac{2}{N} \right) \right)}{\sin\left( \displaystyle\frac{\pi}{2} \left( u - \frac{2}{N} \right) \right)} + \frac{\sin\left( \displaystyle\frac{N\pi}{2} \left( u + \frac{2}{N} \right) \right)}{\sin\left( \displaystyle\frac{\pi}{2} \left( u + \frac{2}{N} \right) \right)} \right] \\ + &+ 0.04 \left[ \frac{\sin\left( \displaystyle\frac{N\pi}{2} \left( u - \frac{2}{N} \right) \right)}{\sin\left( \displaystyle\frac{\pi}{2} \left( u - \frac{2}{N} \right) \right)} + \frac{\sin\left( \displaystyle\frac{N\pi}{4} \left( u + \frac{4}{N} \right) \right)}{\sin\left( \displaystyle\frac{\pi}{4} \left( u + \frac{4}{N} \right) \right)} \right] + \end{aligned} +\end{equation}$$ + +波束方向图的参数为 + +| 加权方式 | HPBW | $BW_{NN}$ | 第一旁瓣高度 | $D_N$ | +| :--: | :--: | :--: | :--: | :--: | +| Hann | $1.44 \displaystyle\frac{2}{N}$ | $4.0 \displaystyle\frac{2}{N}$ | $-31.4 \text{dB}$ | $0.667$ | +| Hamming | $1.31 \displaystyle\frac{2}{N}$ | $4.0 \displaystyle\frac{2}{N}$ | $-39.5 \text{dB}$ | $0.730$ | +| Blackman-Harris | $1.65 \displaystyle\frac{2}{N}$ | $6.0 \displaystyle\frac{2}{N}$ | $-56.6 \text{dB}$ | $0.577$ | + +至此,所有的加权方法都是基于各种正弦函数进行的。现在看看其他类型的阵列加权技术,试试能否更好在波束宽度和旁瓣之间的获得折中。 + +# 8. 长球函数 (Prolate Spheroidal Functions) + +  在设计加权方案时,我们的目标是使得一个给定角度范围内的能量占总能量的比例最大,也即最大化如下比值 + +$$\begin{equation} + \alpha = \frac{\displaystyle\iint_{\varOmega_1}\left| B(\theta,\varphi) \right|^2 \sin\theta\,\mathrm{d}\theta\,\mathrm{d}\varphi}{\displaystyle\int_0^\pi \int_0^{2\pi}\left| B(\theta,\varphi) \right|^2 \sin\theta\,\mathrm{d}\varphi\,\mathrm{d}\theta} +\end{equation}$$ + +其中 $\varOmega_1$ 是主波束周围的一个区域。对于标准线性阵列,可以写成 + +$$\begin{equation} + \alpha = \frac{\displaystyle\int_{-\psi_0}^{\psi_0}\left| B(\psi) \right|^2\,\mathrm{d}\psi}{\displaystyle\int_{-\pi}^{\pi}\left| B(\psi) \right|^2\,\mathrm{d}\psi} +\end{equation}$$ + +其分子和分母部分可分别写为 + +$$\begin{equation} + \begin{aligned} + &\alpha_N &&\xlongequal{B(\psi) = \boldsymbol{w}^\mathrm{H}\boldsymbol{v}_\psi(\psi)} \int_{-\psi_0}^{\psi_0}\boldsymbol{w}^\mathrm{H}\boldsymbol{v}_\psi(\psi) \boldsymbol{v}_\psi^\mathrm{H}(\psi)\boldsymbol{w}\,\mathrm{d}\psi \\ + & &&= \boldsymbol{w}^\mathrm{H} \left[ \int_{-\psi_0}^{\psi_0} \boldsymbol{v}_\psi(\psi) \boldsymbol{v}_\psi^\mathrm{H}(\psi) \,\mathrm{d}\psi \right]\boldsymbol{w} \\ + & &&= \boldsymbol{w}^\mathrm{H}\boldsymbol{A}\boldsymbol{w} \\ + + &\alpha_D &&\xlongequal{B(\psi) = \boldsymbol{w}^\mathrm{H}\boldsymbol{v}_\psi(\psi)} \int_{-\pi}^{\pi}\boldsymbol{w}^\mathrm{H}\boldsymbol{v}_\psi(\psi) \boldsymbol{v} \\ + & &&= \boldsymbol{w}^\mathrm{H}\boldsymbol{A}\boldsymbol{w} + \end{aligned} +\end{equation}$$ + +$$\begin{equation} +\end{equation}$$ + +其中 + +$$\begin{equation} + \begin{aligned} + \boldsymbol{A} &\triangleq \int_{-\psi_0}^{\psi_0} \boldsymbol{v}_\psi(\psi) \boldsymbol{v}_\psi^\mathrm{H}(\psi) \,\mathrm{d}\psi \\ + \boldsymbol{B} &\triangleq \int_{-\pi}^{\pi} \boldsymbol{v}_\psi(\psi) \boldsymbol{v}_\psi^\mathrm{H}(\psi) \,\mathrm{d}\psi = 2\pi \boldsymbol{I} + \end{aligned} +\end{equation}$$ + +$$\begin{equation} + [\boldsymbol{A}]_{mn} = \int_{-\psi_0}^{\psi_0} e^{jm\psi} e^{-jn\psi} \,\mathrm{d}\psi = \frac{2\sin ((m-n)\psi_0)}{m-n} = 2\psi_0 \,\mathrm{sinc}((m-n)\psi_0) +\end{equation}$$ + +因此 + +$$\begin{equation} + \alpha = \frac{\boldsymbol{w}^\mathrm{H}\boldsymbol{A}\boldsymbol{w}}{2\pi \boldsymbol{w}^\mathrm{H}\boldsymbol{w}} +\end{equation}$$ [^1]: 参数 $D_N$ 是阵列的归一化方向性。它是相对于一个均匀加权阵列的方向性进行归一化的。对于标准线阵, $D_N$ 也是归一化的白噪声增益。