PUPolyMatTrimRowCorr

PURPOSE ^

[H2,rho] = PUPolyMatTrimRowCorr(H1,Mu)

SYNOPSIS ^

function [H2,rho] = PUPolyMatTrimRowCorr(H1,Mu)

DESCRIPTION ^

 [H2,rho] = PUPolyMatTrimRowCorr(H1,Mu)

  H2=PUPolyMatTrimRpwCorr(H1) trims the time dimension of a paraunitary
  matrix by removing outer matrix coefficients from each row individually.
  The trimming is performed from both ends, and will remove the matrix 
  coefficient with the smallest Frobenius norm, such that the total energy
  of the trimmed parts does not exceed one permille of the total energy in 
  H1.
 
  H2=PUPolyMatTrimRowCorr(H1,gamma) trims such that the ratio between the 
  removed and total energy of H1 is less than gamma, with 0<=gamma<1.

  [H2,rho]=PUPolyMatTrimRowCorr(H1) or [H2,rho]=PUPolyMatTrimRowCorr(H1,r)
  additionally returns the error in paraunitarity, i.e. the norm of  
  (H2*~H2-I) , after trimming in the variable rho.
  
  This function is the Row-Shift 'trim' operation used in [1] implemented
  by applying the PUPolyMatTrim to each row of the paraunitary matrix H1.

  Input parameters:
     H1      paraunitary matrix
     gamma   maximum ratio between the maximum energy removed at outer lags 
             and the total energy 
             default: 1/1000
             Compared to PUPolyMatTrim gamma typically be set 5 times
             higher to obtain similar error in paraunitary (rho)
  
  Output parameters:
     H2      trimmed parahermitian matrix
     rho     error in paraunitarity

  References:
  [1] J. Corr, K. Thompson, S. Weiss, I.K. Proudler, J.G. McWhirter,
      "Row-Shift Corrected Truncation of Paraunitary Matrices for PEVD 
      Algorithms", 23rd European Signal Processing Conference, Nice,
      France, Sept. 2015.

 See also: PUPolyMatTrim

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [H2,rho] = PUPolyMatTrimRowCorr(H1,Mu)
0002 % [H2,rho] = PUPolyMatTrimRowCorr(H1,Mu)
0003 %
0004 %  H2=PUPolyMatTrimRpwCorr(H1) trims the time dimension of a paraunitary
0005 %  matrix by removing outer matrix coefficients from each row individually.
0006 %  The trimming is performed from both ends, and will remove the matrix
0007 %  coefficient with the smallest Frobenius norm, such that the total energy
0008 %  of the trimmed parts does not exceed one permille of the total energy in
0009 %  H1.
0010 %
0011 %  H2=PUPolyMatTrimRowCorr(H1,gamma) trims such that the ratio between the
0012 %  removed and total energy of H1 is less than gamma, with 0<=gamma<1.
0013 %
0014 %  [H2,rho]=PUPolyMatTrimRowCorr(H1) or [H2,rho]=PUPolyMatTrimRowCorr(H1,r)
0015 %  additionally returns the error in paraunitarity, i.e. the norm of
0016 %  (H2*~H2-I) , after trimming in the variable rho.
0017 %
0018 %  This function is the Row-Shift 'trim' operation used in [1] implemented
0019 %  by applying the PUPolyMatTrim to each row of the paraunitary matrix H1.
0020 %
0021 %  Input parameters:
0022 %     H1      paraunitary matrix
0023 %     gamma   maximum ratio between the maximum energy removed at outer lags
0024 %             and the total energy
0025 %             default: 1/1000
0026 %             Compared to PUPolyMatTrim gamma typically be set 5 times
0027 %             higher to obtain similar error in paraunitary (rho)
0028 %
0029 %  Output parameters:
0030 %     H2      trimmed parahermitian matrix
0031 %     rho     error in paraunitarity
0032 %
0033 %  References:
0034 %  [1] J. Corr, K. Thompson, S. Weiss, I.K. Proudler, J.G. McWhirter,
0035 %      "Row-Shift Corrected Truncation of Paraunitary Matrices for PEVD
0036 %      Algorithms", 23rd European Signal Processing Conference, Nice,
0037 %      France, Sept. 2015.
0038 %
0039 % See also: PUPolyMatTrim
0040 
0041 % J. Corr, University of Strathclyde, 11/12/2014
0042 %
0043 % Last modified 26/8/2015
0044 
0045 [M,N,L] = size(H1);
0046 RowMu = Mu/M; % quite simplistic there may be a better approach...
0047 H2 = zeros(M,N,L);
0048 for i=1:M
0049     Row = H1(i,:,:);             % Extract Row
0050     Row = PUPolyMatTrim(Row,RowMu); % Truncate Row
0051     [~,~,RowLen] = size(Row);
0052     H2(i,:,1:RowLen) = Row;      % Place new row in old row (at the beginning of the matrix)
0053     %Deltas(i) = RDelta;
0054 end
0055 % Remove Zeros
0056 [H2,~] = PUPolyMatTrim(H2,0);
0057 
0058 % prepare additional output parameter if error in paraunitarity is requested
0059 if nargout>1,
0060    HH2 = PolyMatConv(H2,ParaHerm(H2));
0061    L2 = (size(HH2,3)+1)/2;
0062    HH2(:,:,L2) = HH2(:,:,L2)-eye(N);
0063    rho = PolyMatNorm(HH2);
0064 end;
0065 
0066 end

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