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