1.問題描述:
2.部分程式:
close all
clear all%%波束形成
f=[4000,5000,6000];%信号頻率,機關Hz
w=[1,1,1,1,1;%每一行表示一種權重
1,2,4,2,1;
4,2,1,2,4];
fs=4*f;%采樣頻率取信号頻率的4倍
T=0.1;%信号長度,機關s
N=T*fs;%采樣點數
c=1500;%聲速,m/s
d=0.15;%陣元間距,機關m
jay=sqrt(-1);%複機關
theta=-90:1:90;%觀測角度範圍,機關度
tao=d*sin(pi*theta/180)/c;%相鄰陣元時延
xx=zeros(3,2400);%準備産生三種頻率下的參考信号for i=1:3
xx(i,1:N(i))=exp(jay*(2*pi*f(i)/fs(i)*(0:N(i)-1)));%三種頻率下的參考信号
endfor j=1:3%三種頻率循環
for i=1:length(tao)%不同角度循環
for k=(j-1)*5+1:(j-1)*5+5%第一種頻率下的五個陣元的信号
x(k,:)=xx(j,:)*exp(-jay*2*pi*f(j)*(k-1)*tao(i));
end
r=x((j-1)*5+1:(j-1)*5+5,:)*x((j-1)*5+1:(j-1)*5+5,:)'/N(j);%求某一角度下的波束圖,用公式B=w*(∑x*x')*w'/N.
B((j-1)*3+1,i)=w(1,:)*r*w(1,:)';%第j個頻率下的第一種權重的波束圖輸出
B((j-1)*3+2,i)=w(2,:)*r*w(2,:)';%第j個頻率下的第二種權重的波束圖輸出
B((j-1)*3+3,i)=w(3,:)*r*w(3,:)';%第j個頻率下的第三種權重的波束圖輸出
end
end
%c産生的舉證B表示B=[B11;B12;B13;B21;B22;B23;B31;B32;B33];第一個下角标表示第幾個頻率,第二個下角标表示第幾種權重而得到的波束
for k=1:9%分别對9個波束圖進行歸一化和取對數
B(k,:)=real(B(k,:))/max(real(B(k,:)));%歸一化
B(k,:)=20*log10(B(k,:));%取對數
end
figure(1);%頻率f=4000,權重不同
subplot(3,1,1);
plot(theta,B(1,:));axis([-90 90 -60 0]);title('頻率f=4000,權重[1,1,1,1,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,2);
plot(theta,B(2,:));axis([-90 90 -60 0]);title('頻率f=4000,權重[1,2,4,2,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,3);
plot(theta,B(3,:));axis([-90 90 -60 0]);title('頻率f=4000,權重[4,2,1,2,4]');xlabel('角度/°');ylabel('波束圖/dB');figure(2);%頻率f=5000,權重不同
subplot(3,1,1);
plot(theta,B(4,:));axis([-90 90 -60 0]);title('頻率f=5000,權重[1,1,1,1,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,2);
plot(theta,B(5,:));axis([-90 90 -60 0]);title('頻率f=5000,權重[1,2,4,2,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,3);
plot(theta,B(6,:));axis([-90 90 -60 0]);title('頻率f=5000,權重[4,2,1,2,4]');xlabel('角度/°');ylabel('波束圖/dB');figure(3);%頻率f=6000,權重不同
subplot(3,1,1);
plot(theta,B(7,:));axis([-90 90 -60 0]);title('頻率f=6000,權重[1,1,1,1,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,2);
plot(theta,B(8,:));axis([-90 90 -60 0]);title('頻率f=6000,權重[1,2,4,2,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,3);
plot(theta,B(9,:));axis([-90 90 -60 0]);title('頻率f=6000,權重[4,2,1,2,4]');xlabel('角度/°');ylabel('波束圖/dB');figure(4);%權重[1,1,1,1,1],頻率不同
subplot(3,1,1);
plot(theta,B(1,:));axis([-90 90 -60 0]);title('頻率f=4000,權重[1,1,1,1,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,2);
plot(theta,B(4,:));axis([-90 90 -60 0]);title('頻率f=5000,權重[1,1,1,1,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,3);
plot(theta,B(7,:));axis([-90 90 -60 0]);title('頻率f=6000,權重[1,1,1,1,1]');xlabel('角度/°');ylabel('波束圖/dB');figure(5);%權重[1,2,4,2,1],頻率不同
subplot(3,1,1);
plot(theta,B(2,:));axis([-90 90 -60 0]);title('頻率f=4000,權重[1,2,4,2,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,2);
plot(theta,B(5,:));axis([-90 90 -60 0]);title('頻率f=5000,權重[1,2,4,2,1]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,3);
plot(theta,B(8,:));axis([-90 90 -60 0]);title('頻率f=6000,權重[1,2,4,2,1]');xlabel('角度/°');ylabel('波束圖/dB');figure(6);%權重[4,2,1,2,4],頻率不同
subplot(3,1,1);
plot(theta,B(3,:));axis([-90 90 -60 0]);title('頻率f=4000,權重[4,2,1,2,4]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,2);
plot(theta,B(6,:));axis([-90 90 -60 0]);title('頻率f=5000,權重[4,2,1,2,4]');xlabel('角度/°');ylabel('波束圖/dB');
subplot(3,1,3);
plot(theta,B(9,:));axis([-90 90 -60 0]);title('頻率f=6000,權重[4,2,1,2,4]');xlabel('角度/°');ylabel('波束圖/dB');%計算主瓣寬度D和旁瓣級P
for k=1:9
[i,j]=find(abs(B(k,:)+3)<0.5);%誤差限設在0.5dB。
D(k)=(j(length(j))-j(1))*1;%每一個點之間是一度
end %根據計算D的結果可以發現,同一種頻率下三種權重分辨率最高的是第三種,其次是第一種。同一權重下,頻率越高,分辨率越高
disp('9個波束圖的參數依次為,其中分别表示:');
disp('f=4000,w=[1,1,1,1,1];f=4000,w=[1,2,4,2,1];f=4000,w=[4,2,1,2,4]');
disp('f=5000,w=[1,1,1,1,1];f=5000,w=[1,2,4,2,1];f=5000,w=[4,2,1,2,4]');
disp('f=6000,w=[1,1,1,1,1];f=6000,w=[1,2,4,2,1];f=6000,w=[4,2,1,2,4]');
disp('波束寬度為:');
ss=sprintf('%d ',D);
disp(ss);
NN=length(theta);%每一個波束圖離散的點數
for k=1:9
for i=(NN-1)/2+1:NN-1%從主波束開始往後找到第一個次級大的位置
if B(k,i)>=B(k,i+1)&&B(k,i)>=B(k,i-1)
CC(k)=B(k,i);%記錄第一個次級大的分貝數
end
end
end
CC(2)=B(2,1);CC(5)=B(5,1);%由于在[-90,90]度的範圍内,第二種和第五種情況下沒有找到次級大,故用它在-90°的地方分貝數近似。
disp('旁絆級為:');
s=sprintf('%f ',CC);
disp(s);
3.仿真結論: