MuxPolyCovMat

PURPOSE ^

R = MuxPolyCovMat(r,M);

SYNOPSIS ^

function R = MuxPolyCovMat(r,M);

DESCRIPTION ^

R = MuxPolyCovMat(r,M);
  
  MuxPolyCovMat(r,M) returns the polynomial covariance matrix arising for a
  signal characterised by an autocorrelation sequence r that is demulti-
  plexed into M channels.

  This problem arises e.g. in optimal subband coding [1]. The returned 
  matrix R is pseudo-circulant.

  Input parameters:
      r       autocorrelation sequence of input process
      M       number of subchannels for demultiplexing

  Output parameters:
      R       MxMxL polynomial covariance matrix

  Reference:

  [1] S. Redif, J.G. McWhirter, and S. Weiss, "Design of FIR Paraunitary 
      Filter Banks for Subband Coding Using a Polynomial Eigenvalue Decompo- 
      sition," IEEE Transactions on Signal Processing, vol. 59, no. 11, 
      pp. 5253-5264, Nov 2011.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function R = MuxPolyCovMat(r,M);
0002 %R = MuxPolyCovMat(r,M);
0003 %
0004 %  MuxPolyCovMat(r,M) returns the polynomial covariance matrix arising for a
0005 %  signal characterised by an autocorrelation sequence r that is demulti-
0006 %  plexed into M channels.
0007 %
0008 %  This problem arises e.g. in optimal subband coding [1]. The returned
0009 %  matrix R is pseudo-circulant.
0010 %
0011 %  Input parameters:
0012 %      r       autocorrelation sequence of input process
0013 %      M       number of subchannels for demultiplexing
0014 %
0015 %  Output parameters:
0016 %      R       MxMxL polynomial covariance matrix
0017 %
0018 %  Reference:
0019 %
0020 %  [1] S. Redif, J.G. McWhirter, and S. Weiss, "Design of FIR Paraunitary
0021 %      Filter Banks for Subband Coding Using a Polynomial Eigenvalue Decompo-
0022 %      sition," IEEE Transactions on Signal Processing, vol. 59, no. 11,
0023 %      pp. 5253-5264, Nov 2011.
0024 
0025 % S Weiss, UoS, 16/9/2004
0026 % updated, S Weiss, Strathclyde, 27/8/14
0027 
0028 [N1,N2] = size(r);
0029 if N1==1,
0030    r=r.';
0031    L=N2;
0032 else
0033    L=N1;
0034 end;
0035 if mod(L,2)~=1,
0036    error('MuxPolyCovMat() fed with an ACS of even length');
0037 end;  
0038 Lr = (L+1)/2;             % number of lags in r to one side
0039 r  = r(Lr:end);
0040 LR = ceil((Lr+M-1)/M);    % number of lags in R to one side
0041 
0042 Rfull = toeplitz([r; zeros(2*M,1)]);
0043 R(:,:,LR) = Rfull(1:M,1:M);
0044 for i = 1:(LR-1),
0045    R(:,:,LR+i) = Rfull(1:M,i*M+1:(i+1)*M);
0046    R(:,:,LR-i) = R(:,:,LR+i)';
0047 end;
0048

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