相移波束形成算法的MATLAB仿真
仿真結(jié)果如下:
?部分核心程序如下所示:
%**************************************************************************
% ? ? ? ? ? ? ? ? ? ? ? ? ?相移波束形成算法
%**************************************************************************
%=============================變量初始化====================================
clc;
clear;
close all;
f0=2e5; ? ? ? %發(fā)射信號(hào)頻率
fs=10*f0; ? ? %采樣頻率
c=1500; ? ? ? %聲速
M=24; ? ? ? ? %陣元個(gè)數(shù)
t=5e-4; ? ? ? %發(fā)射脈沖寬度
%==========================================================================
theta= 0.15*pi/180; ? ?%信號(hào)方向
d=0.5*c/f0; ? ? ? ? ?%陣間距
N=fs*t; ? ? ? ? ? ? ?%仿真點(diǎn)數(shù)
w0=2*pi*f0; ? ? ? ? ?%發(fā)射信號(hào)角頻率
tao=d*sin(theta)/c; ?%相鄰陣元之間時(shí)延
fai=w0*tao; ? ? ? ? ?%相鄰陣元之間相位差
%==========================契比雪夫加權(quán)系數(shù)=================================
A=10.^(30/20); ? ? ? ? ? ? ? ? ? ? ? ? %由分貝數(shù)改為數(shù)值。
n=M-1;
x=0.5*((2*A)^(1/n)+(1/(2*A))^(1/n)); ? %計(jì)算x。
a=1-1/(x^2); ? ? ? ? ? ? ? ? ? ? ? ? ? %計(jì)算參數(shù)a。
%==========================================================================
w(1)=1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %計(jì)算權(quán)值。
for k=2:(M/2)
? ? w(k)=0;
? ? for s=0:(k-2)
? ? ?w(k)=w(k)+(M-1)/(M-k)*nchoosek(k-2,s)*nchoosek(M-k,s+1)*a^(s+1);
? ? end
end
for i=(M/2+1):M ? ? ? ? ? ? ? ? ? ? ? ? %對(duì)稱得出另一半。
? ? w(i)=w(M-i+1);
end
%=============================信號(hào)的產(chǎn)生===================================
for i=1:M ? ? ? ? ? ?%造帶固定相位差的信號(hào)(相對(duì)與參考陣元)
? ? for n=1:N
? ? ? ? X(i,n)=w(i)*exp(w0*n/fs)*exp(j*(i-1)*fai); ? %加權(quán)
? ? ? ? Y(i,n)=1*exp(j*(i-1)*fai); ? ? ? ?%不加權(quán)
? ? end
end
%**************************************************************************
% ? ? ? ? ? ? ? ? ? ? ? ? ? ?做常規(guī)相移波束形成
%**************************************************************************
beam=-90:0.05:90; ? ? ? ? ? ? ? ? ? ? ?%波束指向角
beta=w0*d*sin(beam*pi/180)/c; ? ? ? %由波束指向角得到的相移
for i=1:length(beam) ? ? ? ? ? ? ? ? ? ? ? ? %造一組相移信號(hào)
? ? for n=1:M
? ? ? ? aw(i,n)=exp(-j*(n-1)*beta(i));
? ? end
end
%==========================================================================
S1=aw*X; ? ? ? ? ? ? ? ? ? ? ? ? ? ? %波束形成(加權(quán))
S2=aw*Y; ? ? ? ? ? ? ? ? ? ? ? ? ? ? %波束形成(不加權(quán))
for i=1:length(beam)
? ? ?R1(i)=sum(abs(S1(i,:)))/N; ? ? ?%檢波(加權(quán))
? ? ?R2(i)=sum(abs(S2(i,:)))/N; ? ? ?%檢波(不加權(quán))
end
xax=-90:0.05:90;
plot(xax,10*log(R1/max(R1)),'r:'); ? %輸出波束圖(加權(quán))
hold on?
plot(xax,10*log(R2/max(R2))); ? ? ? ?%輸出波束圖(不加權(quán))
grid on;
%==========================================================================
D182
?
總結(jié)
以上是生活随笔為你收集整理的相移波束形成算法的MATLAB仿真的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 延时求和波束形成的MATLAB仿真
- 下一篇: 基于MATLAB的MIMO系统分层空时码