PHPolyMatTrim

PURPOSE ^

[R2,rho] = PHPolyMatTrim(R1,gamma)

SYNOPSIS ^

function [R2,rho] = PHPolyMatTrim(R1,gamma)

DESCRIPTION ^

[R2,rho] = PHPolyMatTrim(R1,gamma)
 
  R2=PHPolyMatTrim(R1) trims the lag dimension of a parahermitian matrix R1 by
  symmetrically removing the outer matrix coefficients. The function will 
  remove the matrix coefficient with the smallest Frobenius
  norm, such that by the total energy of the trimmed parts does not exceed  
  one permille of the total energy in R1.
 
  R2=PHPolyMatTrim(R1,gamma) trims such that the ratio between the removed 
  and total energy of R1 is less than gamma, with 0<=gamma<1.

  [R2,rho]=PUPolyMatTrim(R1) or [R2,rho]=PUPolyMatTrim(R1,r) additionally 
  returns the ratio of the actual suppressed energy in R2.
  
  This function is related to PUPolyMatTrim() and the 'trim' operation 
  described in [1,2].

  Input parameters:
     R1      parahermitian matrix
     gamma   maximum ratio between the maximum energy removed at outer lags 
             and the total energy 
             default: 1/1000
  
  Output parameters:
     R2      trimmed parahermitian matrix
     rho     ratio of removed energy

  References:
  [1] J.G. McWhirter, P.D. Baxter, T. Cooper, S. Redif, and J. Foster, "An EVD 
      Algorithm for Para-Hermitian Polynomial Matrices," IEEE Transactions on 
      Signal Processing, vol. 55, no. 5, pp. 2158-2169, May 2007.
  [2] C.H. Ta and S. Weiss, "Shortening the Order of Paraunitary Matrices in  
      SBR2 Algorithm", 6th International Conference on Information, Communi-
      cations & Signal Processing, Singapore, pp. 1-5, Dec. 2007.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [R2,rho] = PHPolyMatTrim(R1,gamma)
0002 %[R2,rho] = PHPolyMatTrim(R1,gamma)
0003 %
0004 %  R2=PHPolyMatTrim(R1) trims the lag dimension of a parahermitian matrix R1 by
0005 %  symmetrically removing the outer matrix coefficients. The function will
0006 %  remove the matrix coefficient with the smallest Frobenius
0007 %  norm, such that by the total energy of the trimmed parts does not exceed
0008 %  one permille of the total energy in R1.
0009 %
0010 %  R2=PHPolyMatTrim(R1,gamma) trims such that the ratio between the removed
0011 %  and total energy of R1 is less than gamma, with 0<=gamma<1.
0012 %
0013 %  [R2,rho]=PUPolyMatTrim(R1) or [R2,rho]=PUPolyMatTrim(R1,r) additionally
0014 %  returns the ratio of the actual suppressed energy in R2.
0015 %
0016 %  This function is related to PUPolyMatTrim() and the 'trim' operation
0017 %  described in [1,2].
0018 %
0019 %  Input parameters:
0020 %     R1      parahermitian matrix
0021 %     gamma   maximum ratio between the maximum energy removed at outer lags
0022 %             and the total energy
0023 %             default: 1/1000
0024 %
0025 %  Output parameters:
0026 %     R2      trimmed parahermitian matrix
0027 %     rho     ratio of removed energy
0028 %
0029 %  References:
0030 %  [1] J.G. McWhirter, P.D. Baxter, T. Cooper, S. Redif, and J. Foster, "An EVD
0031 %      Algorithm for Para-Hermitian Polynomial Matrices," IEEE Transactions on
0032 %      Signal Processing, vol. 55, no. 5, pp. 2158-2169, May 2007.
0033 %  [2] C.H. Ta and S. Weiss, "Shortening the Order of Paraunitary Matrices in
0034 %      SBR2 Algorithm", 6th International Conference on Information, Communi-
0035 %      cations & Signal Processing, Singapore, pp. 1-5, Dec. 2007.
0036 
0037 % S. Weiss and J. Corr, University of Strathclyde, 14/11/2014
0038 
0039 % check input parameters
0040 if nargin<2,
0041    gamma = 0.001;
0042 end;
0043 
0044 % check limit
0045 Norm1 = PolyMatNorm(R1);
0046 E = gamma*Norm1;
0047 [M,~,L] = size(R1);
0048 
0049 % trim from sequentially from front or back, where ever the matrix with the
0050 % smallest norm can be found, until the desired amount of energy has been
0051 % removed
0052 Etrim = 0;
0053 IndexRemove = 1;
0054 Efront = norm(R1(:,:,IndexRemove),'fro').^2;
0055 while ((Etrim + 2*Efront) <= E),
0056    Etrim = Etrim + 2*Efront;
0057    IndexRemove = IndexRemove+1;
0058    Efront = norm(R1(:,:,IndexRemove),'fro').^2;
0059 end;    
0060 
0061 % output
0062 R2 = R1(:,:,IndexRemove:L+1-IndexRemove);
0063 Etrim = Etrim - 2*Efront;
0064 rho = Etrim/Norm1;

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