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