H = PolyMatConv(F,G); Returns the convolution of two MIMO system matrices F and G. This convolution operator is not commutative, and if representing polynomial matrices, F is left-multiplied onto G. For all matrices F, G and H, the first two dimensions are spatial, and the third dimension is lag or time. If e.g. F is a polynomial matrix of the format F(z) = F0 + F1 z^{-1} + F2 z^{-2} + ... then F(:,:,1) = F0; F(:,:,2) = F1; F(:,:,3) = F2; ... is the required representation for the input. The output is H(z) = F(z)G(z) with a format representation analogously to F(z) above. Input parameters F K x M x L1 MIMO system matrix K output dimension M input dimension L1 length of FIR filters G M x N x L2 MIMO system matrix M output dimension N input dimension L2 length of FIR filters Output parameters H K x N x (L1+L2-1) MIMO system matrix
0001 function H = PolyMatConv(F,G); 0002 %H = PolyMatConv(F,G); 0003 % 0004 % Returns the convolution of two MIMO system matrices F and G. This 0005 % convolution operator is not commutative, and if representing 0006 % polynomial matrices, F is left-multiplied onto G. 0007 % 0008 % For all matrices F, G and H, the first two dimensions are spatial, 0009 % and the third dimension is lag or time. If e.g. F is a polynomial 0010 % matrix of the format 0011 % F(z) = F0 + F1 z^{-1} + F2 z^{-2} + ... 0012 % then 0013 % F(:,:,1) = F0; 0014 % F(:,:,2) = F1; 0015 % F(:,:,3) = F2; 0016 % ... 0017 % is the required representation for the input. The output is 0018 % H(z) = F(z)G(z) 0019 % with a format representation analogously to F(z) above. 0020 % 0021 % Input parameters 0022 % F K x M x L1 MIMO system matrix 0023 % K output dimension 0024 % M input dimension 0025 % L1 length of FIR filters 0026 % G M x N x L2 MIMO system matrix 0027 % M output dimension 0028 % N input dimension 0029 % L2 length of FIR filters 0030 % 0031 % Output parameters 0032 % H K x N x (L1+L2-1) MIMO system matrix 0033 0034 % S Weiss, Univ of Southampton, 15/7/2004 0035 0036 [M1,N1,L1] = size(F); 0037 [M2,N2,L2] = size(G); 0038 if N1 ~= M2, 0039 error('input matrix dimensions to function PolyMatConv() do not agree'); 0040 end; 0041 % Pre-allocate MIMO system matrix 0042 H = zeros(M1,N2,L1+L2-1); 0043 0044 for m = 1:M1, 0045 for n = 1:N2, 0046 for k = 1:N1, 0047 a = shiftdim(F(m,k,:),1); 0048 b = shiftdim(G(k,n,:),1); 0049 c(1,:,1) = conv(a,b); 0050 H(m,n,:) = H(m,n,:) + shiftdim(c,-1); 0051 end; 0052 end; 0053 end; 0054