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.
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