• 大小: 6KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: 圆阵波束  

资源简介

圆阵波束形成 包括时延,相移,频域波束形成相关知识

资源截图

代码片段和文件信息

function [powerpowerdBdoasignal_out]=Beamforming_CircleArray(stylemethodscandthitasigRNf0fsW)
%--------------2012-02-17------------------------------
% 圆弧阵波束形成,360度全方位扫描
% 输入:        style :信号形式     1---窄带信号(单频信号)    2---宽带信号(LFM)
%             method : 波束形成算法类型  
%                                 “1”--- 时域的时延波束形成
%                                 “2”--- 相移波束形成
%                                 “3”--- 频域波束形成
%                                 “4”--- 经过三次FFT的频域波束形成,延迟滤波器和输入信号在频域相乘
%              scan : 开角范围(单位:度)
%           dthita : 扫描步长 (单位:度)
%                sig : 圆阵输入信号
%                  R : 圆阵半径
%                  N : 阵元个数
%                 f0 : 窄带的中心频率或者宽带的最小频率
%                 fs :采样率
%                  W : 加权值
% 输出:       power :能量
%            powerdB : 能量归一化分贝输出
%              doa : 信号波达方向( 单位:度)
%         signal_out : 波束在预成方向上叠加后的输出信号,每一行代表一个方向上的输出
%---------------------------------------------------------
c=1500;  %%默认声速为1500m/s
[sig_Nsig_len]=size(sig);
if( sig_N ~= N )
    error(‘信号和圆阵个数不匹配‘);
end
if ( style ~=1 & style ~=2  )
    error(‘请正确选择输入信号类型‘);
end
if ( method ~=1 & method ~=2 & method ~=3 & method ~=4 )
    error(‘请正确选择波束形成算法‘);
end

psi = 2 * pi *(0:N-1) / N; %%圆心角
thita=[0:dthita:359]*pi/180;
power=zeros(1length(thita));
scan_begin = thita - scan *pi/180/ 2;
scan_begin( scan_begin < 0 ) = scan_begin( scan_begin < 0 )+2*pi;
scan_end = thita + scan * pi/180/ 2;
scan_end(scan_end >= 2*pi) = scan_end(scan_end >= 2*pi)-2*pi;
flag=zeros(length(thita)N); %% 标志位,对应位为1时,表示该号阵元参与计算
%%----------  确定预成方向上参与计算的阵元号存入flag中  ----
for a=thita
            index=round(a/(dthita*pi/180)+1);
            if( scan_end (index) / (scan_begin (index)+eps) <= (1.0+0.0001))
                flag(indexfind(scan_begin (index)./ (psi+eps) <=(1.0+eps)))=1;
                flag(indexfind((psi-eps) ./(scan_end (index)+eps) <= (1.0+eps)))=1; 
            else
                flag(indexfind(scan_begin (index)./(psi+eps) <= (1.0+eps) & psi ./(scan_end (index)+eps)<= (1.0+eps)))=1;
            end 
end
%%-------------------------------------------------------------
if( method == 1)                %%----  时延波束形成对入射信号不限制,窄带、宽带均可  ( method == 1) ---- 
    beishu=1;
    %%---- 升采样(可选) ----
%         beishu=10;
%         sig=resample(sig.‘beishu1);
%         sig=sig.‘;
%         fs=fs*beishu;
%         sig_len=sig_len*beishu;
    %%------------------------
    MaxTao=round(2*R/c*fs);
    for a=thita
%         a*180/pi
        sig_buchang=zeros(Nsig_len+MaxTao);
        index=round(a/(dthita*pi/180)+1);
        Number_Array_InUse=find(flag(index:)==1);
        Ntao0=round(R*(1-cos(a-psi(Number_Array_InUse)))/c*fs);
        for kk=1:length(Number_Array_InUse)
            sig_buchang(Number_Array_InUse(kk)MaxTao-Ntao0(kk)+1:MaxTao-Ntao0(kk)+sig_len)=sig(Number_Array_InUse(kk):);
        end
        sig_buchang=resample(sig_buchang.‘1beishu);
        sig_buchang=sig_buc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-09-11 15:42  CircleBeamforming\
     文件        7420  2014-09-11 15:34  CircleBeamforming\Beamforming_CircleArray.m
     文件        3830  2014-02-28 16:41  CircleBeamforming\CreateSignal_CircleArray.m
     文件        2040  2014-09-11 15:44  CircleBeamforming\Simulation1.m

评论

共有 条评论

相关资源