%方位估计实验 比幅法
clear all;
close all;
%导入数据
load('data_831.mat');
x0(1,:) = Data1_AI_0___U';
x0(2,:) = Data1_AI_1___U';
x0(3,:) = Data1_AI_2___U';
x0(4,:) = Data1_AI_3___U';
x0(5,:) = Data1_AI_4___U';
x0(6,:) = Data1_AI_5___U';
x0(7,:) = Data1_AI_6___U';
x0(8,:) = Data1_AI_7___U';
x0(9,:) = Data1_AI_8___U';
x0(10,:) = Data1_AI_9___U';
x0(11,:) = Data1_AI_10___U';
x0(12,:) = Data1_AI_11___U';
%圆弧基阵信息
N = 12;
R = 0.24;
BETA = 30*pi/180;
%上述基阵尺寸近似满足lambda=d/2
%声信号信息
F = 5700; %5.7khz信号
FS = 200000; %200kHz采样
T = 100/F; %100个CYCLE
T0 = 1; %1s周期
NS = T*FS; %脉宽内的采样点
C = 1450; %声速
THETA_D = 30; %多波束的波束指向角增量,必须是360的约数
THETA_T = (0:THETA_D:360)*pi/180; %假定信号来得方向
x = [zeros(N,300) x0(:,146000:147000) zeros(N,300)];
M = length(x(1,:));
figure(1);
for i=1:N
subplot(3,4,i)
plot(x(i,:));
axis([0 M-1 -5 5])
title(strcat(num2str(i),'号阵元'));
end
for t = 1:length(THETA_T)-1 %形成各个波束,波束号
%在假定入射方向THETA_T(t)时,各阵元补时延差,使其同相叠加,提前为正
for i = 0:N-1 %阵元号
delay_T(i+1) = FS*R*cos(THETA_T(t)-i*BETA)/C; %相对相位中心的延迟为-,提前为+
x_d(i+1,:) = interp1(0:M-1,x(i+1,:),(0:M-1)-delay_T(i+1),'cubic');%提前量推迟回去
end
w = [1 1 1 1 0 0 0 0 0 1 1 1]; %0°指向角时的加权向量
%调用循环移位子函数
w = CRS(w,t-1);
x_d= diag(w)*x_d;
y = sum(x_d);
D(t) = sum(abs(y)); %在假定入射方向THETA_T(t)时,该波束输出幅度响应
end
[Dmax1 Dmax2 t1 t2] = max2(D,1:length(THETA_T)-1);
figure(2)
stem(1:length(THETA_T)-1,D,'*');
title('波束输出幅度响应');
xlabel('波束号t');
ylabel('各波束幅度响应');
xyz = THETA_T(t1)*180/pi;
theta_d = (-30:0.1:30)*pi/180;
for j=1:length(theta_d)
theta1 = THETA_T(t1)+theta_d(j);
theta2 = THETA_T(t2)+theta_d(j);
for i = 0:N-1 %阵元号
delay_T(i+1) = FS*R*cos(theta1-i*BETA)/C; %相对相位中心的延迟为-,提前为+
x_d(i+1,:) = interp1(0:M-1,x(i+1,:),(0:M-1)-delay_T(i+1),'cubic');%提前量推迟回去
end
w = [1 1 1 1 1 1 1 1 1 1 1 1]; %0°指向角时的加权向量
%调用循环移位子函数
w = CRS(w,t1-1);
x_d= diag(w)*x_d;
y = sum(x_d);
D1(j) = sum(abs(y)); %在假定入射方向THETA_T(t)时,该波束输出幅度响应
for i = 0:N-1 %阵元号
delay_T(i+1) = FS*R*cos(theta2-i*BETA)/C; %相对相位中心的延迟为-,提前为+
x_d(i+1,:) = interp1(0:M-1,x(i+1,:),(0:M-1)-delay_T(i+1),'cubic');%提前量推迟回去
end
w = [1 1 1 1 1 1 1 1 1 1 1 1]; %0°指向角时的加权向量
%调用循环移位子函数
w = CRS(w,t2-1);
x_d= diag(w)*x_d;
y = sum(x_d);
D2(j) = sum(abs(y)); %在假定入射方向THETA_T(t)时,该波束输出幅度响应
deta_D(j) = D1(j)-D2(j);
end
figure(3)
plot(theta_d*180/pi,D1,'r',theta_d*180/pi,D2,'b');
xlabel('波束指向角转动量'),ylabel('两波束输出信号幅度')
hold on;
grid on;
figure(4)
plot((THETA_T(t1)+THETA_T(t2))/2+theta_d*180/pi,deta_D);
xlabel('波束指向角转动量'),ylabel('两波束输出信号幅度差值'),axis([-30 30 -10000 10000])
grid on;
for i = 1:length(theta_d)
if(deta_D(i)==min(abs(deta_D)))
break;
end
end
THETA_T = (THETA_T(t1)+THETA_T(t2))/2+theta_d(i);
theta_dircetion = THETA_T*180/pi
评论2