⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bfwithf.m

📁 基于线列阵的频域的波束形成(matlab)程序
💻 M
字号:
clear all
close all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
D=4;
N=32;            		%阵元数
f_max=6000;      		%目标信号最高频率
f_min=500;      			%目标信号最低频率
c=1500;          		%声速 
d=.18;
ft=1000;         		%目标信号频率
fd=4000;
L=c/ft;          		%波长 
fs=25000;      			%采样频率
M=512;
for qq=20  % for qq=0  
theta1=qq*pi/180; 		%目标信号方位角
t1=d*sin(theta1)/c;		%目标信号延时
NUM=512;        		%存储器长度 
New=256;
step=32;
DT=5;						%检测域
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

signal=zeros(N,NUM);
for n=1:1:N
   for num=1:1:NUM
      signal(n,num)=cos(2*pi*ft*(num/fs+(n-1)*t1));%+cos(2*pi*(ft)*(num/fs-(n-1)*t2));
   end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%for k=1:1:N
%  signal(k,:)=signal(k,:)+randn(1,NUM);
%end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%temporal fft
Ns=512;
FFTsignal=zeros(N,Ns);
for i=1:N
   FFTsignal(i,:)=fft(signal(i,:),Ns); % 32 array 1024 point fft
end
%TRANSPOSE
LINE_min=floor(f_min/(fs/Ns));
LINE_max=ceil(f_max/(fs/Ns));
trans=zeros(LINE_max-LINE_min+1,N*D);
for i=LINE_min:LINE_max
   for j=1:N
      trans(i-LINE_min+1,j)=FFTsignal(j,i);
   end
end
for i=1:LINE_max-LINE_min+1
   FFTsignal1(i,:)=fft(trans(i,:),N*D);
end
Q=fs*N*D*d/(c*M);
%???Kf=ceil(fd*M/fs);

kkk=1;
for kk=1:-1/step:1/step
   for k=LINE_min:LINE_max
      tmk(kkk,k-LINE_min+1)=ceil(Q*k*kk)+1;
   end
 kkk=kkk+1;  
end
kkk=1;
for kk=1:-1/step:1/step
   for k=LINE_min:LINE_max
      tmd(kkk,k-LINE_min+1)=floor(N*D-Q*k*kk)+1;
   end
   kkk=kkk+1;
end

MAPsignal=zeros(2*step+1,M);
for w=1:step
   for k=1:LINE_max-LINE_min+1
      MAPsignal(w,k+LINE_min-1)=FFTsignal1(k,tmd(w,k));
   end
end

for w=1:step
   for k=1:LINE_max-LINE_min+1
      MAPsignal(w+step+1,k+LINE_min-1)=FFTsignal1(k,tmk(step+1-w,k));
   end
end

for k=1:LINE_max-LINE_min+1
   MAPsignal(step+1,k+LINE_min-1)=FFTsignal1(k,1);
end
sum_signal1=zeros(1,2*step+1);
for k=1:2*step+1
   for i=1:Ns
      sum_signal1(1,k)=sum_signal1(1,k)+abs(MAPsignal(k,i))*abs(MAPsignal(k,i));
   end
end
figure;
hold
subplot(1,1,1);
plot(asin(-1:1/step:1)*180/pi,sqrt(sum_signal1),'r');
plot(asin(-1:1/step:1)*180/pi,sqrt(sum_signal1),'.');
grid
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -