MIMO_ML_InvCovOutputError

PURPOSE ^

SYNOPSIS ^

function PolyTrans = MIMO_ML_InvCovOutputError(data, PolyTrans);

DESCRIPTION ^

           Calculates a hermitian symmetric square root of the inverse of 
           the covariance matrix of the output error Y-G*U.

   function PolyTrans = MIMO_ML_InvCovOutputError(data, PolyTrans);


   Output

        PolyTrans    =    structure containing the polynomials and transfer functions evaluated in x
                            PolyTrans.A             =    denominator polynomial plant transfer function evaluated in x.Plant 
                                                       size 1 x F 
                            PolyTrans.G             =    plant transfer matrix evaluated in x.Plant
                                                       size ny x nu x F 
                            PolyTrans.Tg            =    plant transient term evaluated in x.Plant
                                                       size ny x F 
                           PolyTrans.sqrtCEinv     =   hermitian symmetric square root of the inverse of the covariance of the 
                                                       output error (Cov(NY-G*NU)) 

   Input

        data        =    structure containing the non-parametric covariance data
                            data.CY                 =    (sample) noise covariance matrix of Y, size: ny x ny x F 
                           data.CU                 =   (sample) noise covariance matrix of U, size: nu x nu x F 
                           data.CYU                =   (sample) noise covariance matrix of U, size: ny x nu x F 

        PolyTrans    =    structure containing the polynomials and transfer functions evaluated in x
                            PolyTrans.A             =    denominator polynomial plant transfer function evaluated in x.Plant 
                                                       size 1 x F 
                            PolyTrans.G             =    plant transfer matrix evaluated in x.Plant
                                                       size ny x nu x F 
                            PolyTrans.Tg            =    plant transient term evaluated in x.Plant
                                                       size ny x F 


 Copyright (c) Rik Pintelon, Vrije Universiteit Brussel - dept. ELEC, November 2009
 All rights reserved.
 Software can be used freely for non-commercial applications only.
 Version 1 December 2009

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function PolyTrans = MIMO_ML_InvCovOutputError(data, PolyTrans);
0002 %
0003 %           Calculates a hermitian symmetric square root of the inverse of
0004 %           the covariance matrix of the output error Y-G*U.
0005 %
0006 %   function PolyTrans = MIMO_ML_InvCovOutputError(data, PolyTrans);
0007 %
0008 %
0009 %   Output
0010 %
0011 %        PolyTrans    =    structure containing the polynomials and transfer functions evaluated in x
0012 %                            PolyTrans.A             =    denominator polynomial plant transfer function evaluated in x.Plant
0013 %                                                       size 1 x F
0014 %                            PolyTrans.G             =    plant transfer matrix evaluated in x.Plant
0015 %                                                       size ny x nu x F
0016 %                            PolyTrans.Tg            =    plant transient term evaluated in x.Plant
0017 %                                                       size ny x F
0018 %                           PolyTrans.sqrtCEinv     =   hermitian symmetric square root of the inverse of the covariance of the
0019 %                                                       output error (Cov(NY-G*NU))
0020 %
0021 %   Input
0022 %
0023 %        data        =    structure containing the non-parametric covariance data
0024 %                            data.CY                 =    (sample) noise covariance matrix of Y, size: ny x ny x F
0025 %                           data.CU                 =   (sample) noise covariance matrix of U, size: nu x nu x F
0026 %                           data.CYU                =   (sample) noise covariance matrix of U, size: ny x nu x F
0027 %
0028 %        PolyTrans    =    structure containing the polynomials and transfer functions evaluated in x
0029 %                            PolyTrans.A             =    denominator polynomial plant transfer function evaluated in x.Plant
0030 %                                                       size 1 x F
0031 %                            PolyTrans.G             =    plant transfer matrix evaluated in x.Plant
0032 %                                                       size ny x nu x F
0033 %                            PolyTrans.Tg            =    plant transient term evaluated in x.Plant
0034 %                                                       size ny x F
0035 %
0036 %
0037 % Copyright (c) Rik Pintelon, Vrije Universiteit Brussel - dept. ELEC, November 2009
0038 % All rights reserved.
0039 % Software can be used freely for non-commercial applications only.
0040 % Version 1 December 2009
0041 %
0042 
0043 
0044 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
0045 % initialisation variables %
0046 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
0047 
0048 F = size(data.CY, 3);                       % number of frequencies
0049 ny = size(data.CY, 1);                      % number of outputs
0050 
0051 PolyTrans.sqrtCEinv = zeros(ny, ny, F);     % hermitian square root of CEinv
0052 
0053 
0054 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0055 % Fast calculation of the covariance Cov(NY-G*NU) of the equation error (NY-G*NU). The lines     %
0056 % below are equivalent with                                                                      %
0057 % for kk = 1:F                                                                                   %
0058 %    CE = data.CY(:,:,kk) + PolyTrans.G(:,:,kk) * data.CU(:,:,kk) * PolyTrans.G(:,:,kk)' ...      %
0059 %         - 2*herm(data.CYU(:,:,kk) * PolyTrans.G(:,:,kk)');                                     %
0060 % end                                                                                            %
0061 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0062 
0063 % PolyTrans.sqrtCEinv is used as intermediate variable for CE = Cov(NY-G*NU)
0064 PolyTrans.sqrtCEinv = data.CY + Mat_Mult(Mat_Mult(PolyTrans.G, data.CU), Conj_Trans(PolyTrans.G)) ...
0065                       - 2*herm(Mat_Mult(data.CYU, Conj_Trans(PolyTrans.G)));
0066 
0067                   
0068 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0069 % calculation of a hermitian symmetric square root of CEinv = Cov(Ny-G*NU) %
0070 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0071 
0072 if ny == 1
0073     PolyTrans.sqrtCEinv = PolyTrans.sqrtCEinv.^(-0.5);
0074 else % more than one output
0075     % relative upper limit under which the singular values are set to zero
0076     % in the pseudo-inverse of the square root of the covariance matrix
0077     delta = 1e-6; 
0078     % pseudo-inverse covariance matrix output residuals
0079     PolyTrans.sqrtCEinv = Sqrt_Inv(PolyTrans.sqrtCEinv, delta);
0080 end % if one output
0081

Generated on Thu 07-Jun-2012 11:58:58 by m2html © 2005