波束锐化matlab代码
时间: 2023-10-10 12:07:07 浏览: 35
以下为波束锐化的Matlab代码:
%%波束锐化
clear all;
close all;
clc;
%%生成波束矩阵
N=64;
theta=linspace(0,pi,N);
w=ones(1,N);
for i=1:N
if(theta(i)>=pi/4&&theta(i)<=3*pi/4)
w(i)=0.1;
end
end
a=w;
%%生成输入信号
M=1024;
f=linspace(-0.5,0.5,M);
s=exp(2j*pi*0.25*f)+exp(2j*pi*0.35*f);
%%FFT
A=fft(a,M);
S=fft(s,M);
%%加窗
AS=A.*S;
%%IFFT
as=ifft(AS);
%%波束锐化
b=zeros(1,N);
for i=1:N
b(i)=exp(-1j*pi*(i-N/2)*(N/2)/N);
end
%%生成波束矩阵
B=fft(b,M);
%%加窗
absB=abs(B);
ASB=AS./absB;
%%IFFT
asb=ifft(ASB);
%%显示结果
figure();
subplot(211);
plot(f,abs(s));
title('输入信号');
xlabel('频率');
ylabel('幅度');
subplot(212);
plot(f,abs(as));
title('加窗后信号');
xlabel('频率');
ylabel('幅度');
figure();
subplot(211);
plot(f,abs(s));
title('输入信号');
xlabel('频率');
ylabel('幅度');
subplot(212);
plot(f,abs(asb));
title('波束锐化后信号');
xlabel('频率');
ylabel('幅度');