BroadbandSteeringVector

PURPOSE ^

S = BBSteeringVector(M,alpha,T);

SYNOPSIS ^

function S = BroadbandSteeringVector(M,alpha,T);

DESCRIPTION ^

S = BBSteeringVector(M,alpha,T);
  
   S=BBSteeringVector(M,alpha) simulates a broadband steering vector for a 
   linear equispaced array with critical sampling in both space and time.
   The number of array elements is M, and the implementation of the broadband
   steering vector is based on a windowed sinc function [1,2] of order 50.
    
   S=BBSteeringVector(M,alpha,T) changes the default value for the order of
   the fractional delay filter to 2T. 

   Input parameters:
      M      number of array elements
      alpha  angle of incident measured against broadside /[rad]
      T      half order of fractional delay filter (optional)
             default  value: T=25;

   Output parameter:
      S      broadband steering vector (M x 1 x (2T+1) )
   
   References:
   [1]  T.I. Laakso, V. Valimaki, M. Karjalainen, and U.K. Laine: "Splitting 
        the unit delay," IEEE Signal Processing Magazine, 13(1):30-60, Jan.
        1996.
   [2]  J.Selva, "An efficient structure for the design of variable fractional 
        delay filters based on the windowing method," IEEE Transactions on 
        Signal Processing, 56(8):3770--3775, Aug. 2008.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function S = BroadbandSteeringVector(M,alpha,T);
0002 %S = BBSteeringVector(M,alpha,T);
0003 %
0004 %   S=BBSteeringVector(M,alpha) simulates a broadband steering vector for a
0005 %   linear equispaced array with critical sampling in both space and time.
0006 %   The number of array elements is M, and the implementation of the broadband
0007 %   steering vector is based on a windowed sinc function [1,2] of order 50.
0008 %
0009 %   S=BBSteeringVector(M,alpha,T) changes the default value for the order of
0010 %   the fractional delay filter to 2T.
0011 %
0012 %   Input parameters:
0013 %      M      number of array elements
0014 %      alpha  angle of incident measured against broadside /[rad]
0015 %      T      half order of fractional delay filter (optional)
0016 %             default  value: T=25;
0017 %
0018 %   Output parameter:
0019 %      S      broadband steering vector (M x 1 x (2T+1) )
0020 %
0021 %   References:
0022 %   [1]  T.I. Laakso, V. Valimaki, M. Karjalainen, and U.K. Laine: "Splitting
0023 %        the unit delay," IEEE Signal Processing Magazine, 13(1):30-60, Jan.
0024 %        1996.
0025 %   [2]  J.Selva, "An efficient structure for the design of variable fractional
0026 %        delay filters based on the windowing method," IEEE Transactions on
0027 %        Signal Processing, 56(8):3770--3775, Aug. 2008.
0028 
0029 %   M. Alrmah, S. Weiss, University of Strathclyde, 24/11/2014
0030 %   updated for delays to be centred w.r.t. the array, S. Weiss, 16/11/22
0031 
0032 % input option
0033 if nargin==2,
0034    T = 25;
0035 end;
0036 
0037 % fractional delay between adjacent elements
0038 dT = sin(alpha);
0039 
0040 % centre the delay profile
0041 if dT >=0,
0042    DelayProfile = ((0:(M-1))-(M-1)/2)*dT;
0043 else;
0044    DelayProfile = -((0:(M-1))-(M-1)/2)*dT;
0045 end;
0046 
0047 % maximum shift and effective support of indiviual fractional delay filters
0048 MaxShift = floor(DelayProfile(M)+0.5);
0049 Tr = T-MaxShift;
0050 
0051 S = zeros(M,1,2*T+1);
0052 for m =1:M,
0053    t = (-Tr:Tr);
0054    FracDelay = DelayProfile(m);
0055    FracFracDelay = mod(FracDelay+0.5,1)-0.5;
0056    IntFracDelay = floor(FracDelay+0.5);
0057    w_Hann = 1 + cos(2*pi*(t-FracFracDelay)/2/(Tr+1));   
0058    % windowed sinc function
0059    dummy = sinc(t-FracFracDelay).*w_Hann/sqrt(M);
0060    % insertion into broadband steering vector
0061    Shift = MaxShift+IntFracDelay;
0062    if dT >= 0,
0063      S(m,1,Shift+(1:2*Tr+1)) = dummy;
0064    else; 
0065      S(M-m+1,1,Shift+(1:2*Tr+1)) = dummy;
0066    end; 
0067 end; 
0068

Generated on Mon 03-Jul-2023 19:45:57 by m2html © 2005