clc;
clear;
%% 参数
c=1500;
f0=1.5e3;
fs=150e3;
T=50e-3;
SNR=20;
lamda=c./f0;
D=lamda./2;
N=21;
maxdelay=(N-1).*D./c;
Nmaxdelay=round(maxdelay.*fs);
alpha=(-90:90)*pi./180;
px=(0:N-1).*D;
theta0=0*pi./180;
N_delay0=D.*sin(theta0)./c.*fs;
Wn=2*[1000 2000]/fs;
bb=fir1(128,Wn,'bandpass'); %带通滤波器系数
%% 信号模型
t=0:1./fs:T;
sig00=sqrt(2).*cos(2.*pi.*f0.*t);
for mm=1:N;
N0=round(N_delay0.*(mm-1));
sig0(mm,:)=[zeros(1,Nmaxdelay.*2-N0) sig00 zeros(1,Nmaxdelay.*1+N0)];
end
len=length(sig0(1,:));
for mm=1:N;
NN=normrnd(0,1,1,len); %% 加噪声
noise=filter(bb,1,NN);
noise=noise/std(noise); %噪声能量归一化
noise=noise/10^(SNR/20); %噪声与信噪比的转化
sig(mm,:)=sig0(mm,:)+noise;
end
%% 时域波束形成
% tt=(0:len-1)./fs;
% tt1=(Nmaxdelay+1:len-1-Nmaxdelay)./fs;
% for mm=1:length(alpha);
% for nn=1:N;
% tc0=(nn-1).*D.*sin(alpha(mm))./c;
% ss(nn,:)=interp1(tt,sig0(nn,:),tt1-tc0);
% end
% sss(mm,:)=sum(ss,1);
% % sss1(mm,:)=sum(ss(1:20,:),1);
% % sss2(mm,:)=sum(ss(2:21,:),1);
% sout(mm)=std(sss(mm,:));
% % mm
% end
% figure
% plot(alpha.*180./pi,20.*log10(sout./max(sout)))
% xlabel('方位角/度')
% ylabel('波束输出/分贝')
% title('时域波束形成')
% grid on
%% 频域波束形成
% vscan=exp(-j*2*pi*f0/c*px'*sin(alpha));
% for ii=1:N
% Sf=fft(sig(ii,:),fs);
% R1(ii)=Sf(f0+1);
% end
% R0=R1*vscan;
% yy=abs(real(R0));
% yy=yy./max(yy);
% figure
% plot(alpha.*180./pi,20.*log10(yy))
% xlabel('方位角/度')
% ylabel('波束输出/分贝')
% title('频域波束形成')
% grid on
%% DFT波束形成
for ii=1:N
Sf=fft(sig(ii,:),fs);
R1(ii)=Sf(f0+1);
end
nfft=1024;
Beam_DFT=fftshift(abs(fft(R1,nfft)));
Beam_DFT=20*log10(Beam_DFT./max(Beam_DFT));
nn1=[nfft/2+1:nfft,1:nfft/2];
angle = asin(lamda/D*[-nfft/2:nfft/2-1]/nfft)*180/pi;
figure
plot(angle,Beam_DFT)
xlabel('方位角/度')
ylabel('波束输出/分贝')
title('DFT波束形成')
grid on