📄 bfwithf.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 + -