MIMO_ML_Constrain

PURPOSE ^

SYNOPSIS ^

function Theta = MIMO_ML_Constrain(Theta, ModelVar);

DESCRIPTION ^

 function Theta = MIMO_ML_Constrain(Theta, ModelVar);

    Impose the following constraints on the plant model parameters:
            1. reciprocity B
            2. norm([a, vec(b), vec(ig)] = 1


    Output parameter

        Theta    =    see input parameters


    Input parameters

        Theta        =    new estimate plant, noise, and initial conditions parameters
                        structure with fields 'A', 'B', 'Ig'
                            Theta = struct('A',[],'B',[], 'Ig', [])
                            Theta.A = 1 x (OrderA+1)
                                Theta.A(r) = coefficient a(r-1) of Omega^(r-1) 
                            Theta.B = ny x nu x (OrderB+1)
                                Theta.B(i,j,r) = coefficient b(i,j,r-1) of Omega^(r-1)
                            Theta.Ig = ny x (OrderIg+1)
                                Theta.Ig(i,r) = coefficient ig(i,r-1) of Omega^(r-1) 

        ModelVar    =    contains the information about the model to be identified
                        structure with fields 'Transient', 'ThePlane', 'TheModel', 'Reciprocal', ...
                            ModelVar.Transient        =    1 then the initial conditions of the plant and/or noise are estimated
                            ModelVar.PlantPlane        =    plane of the plant model
                                                            's':    continuous-time;
                                                            'w':    sqrt(s)-domain
                                                            'z':    discrete-time;
                                                            '':        plane not defined
                            ModelVar.Struct            =    model structure
                                                           'EIV':  errors-in-variables (noisy input-output data)
                                                            'OE':    generalised output error (known input, noisy output)
                            ModelVar.RecipPlant        =    1 if plant model is reciprocal: G(i,j) = G(j,i)
                            ModelVar.nu                =    number of inputs
                            ModelVar.ny                =     number of outputs
                            ModelVar.na                =    order polynomial A
                            ModelVar.nb                =     order matrix polynomial B
                            ModelVar.nig            =    order vector polynomial Ig


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

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function Theta = MIMO_ML_Constrain(Theta, ModelVar);
0002 %
0003 % function Theta = MIMO_ML_Constrain(Theta, ModelVar);
0004 %
0005 %    Impose the following constraints on the plant model parameters:
0006 %            1. reciprocity B
0007 %            2. norm([a, vec(b), vec(ig)] = 1
0008 %
0009 %
0010 %    Output parameter
0011 %
0012 %        Theta    =    see input parameters
0013 %
0014 %
0015 %    Input parameters
0016 %
0017 %        Theta        =    new estimate plant, noise, and initial conditions parameters
0018 %                        structure with fields 'A', 'B', 'Ig'
0019 %                            Theta = struct('A',[],'B',[], 'Ig', [])
0020 %                            Theta.A = 1 x (OrderA+1)
0021 %                                Theta.A(r) = coefficient a(r-1) of Omega^(r-1)
0022 %                            Theta.B = ny x nu x (OrderB+1)
0023 %                                Theta.B(i,j,r) = coefficient b(i,j,r-1) of Omega^(r-1)
0024 %                            Theta.Ig = ny x (OrderIg+1)
0025 %                                Theta.Ig(i,r) = coefficient ig(i,r-1) of Omega^(r-1)
0026 %
0027 %        ModelVar    =    contains the information about the model to be identified
0028 %                        structure with fields 'Transient', 'ThePlane', 'TheModel', 'Reciprocal', ...
0029 %                            ModelVar.Transient        =    1 then the initial conditions of the plant and/or noise are estimated
0030 %                            ModelVar.PlantPlane        =    plane of the plant model
0031 %                                                            's':    continuous-time;
0032 %                                                            'w':    sqrt(s)-domain
0033 %                                                            'z':    discrete-time;
0034 %                                                            '':        plane not defined
0035 %                            ModelVar.Struct            =    model structure
0036 %                                                           'EIV':  errors-in-variables (noisy input-output data)
0037 %                                                            'OE':    generalised output error (known input, noisy output)
0038 %                            ModelVar.RecipPlant        =    1 if plant model is reciprocal: G(i,j) = G(j,i)
0039 %                            ModelVar.nu                =    number of inputs
0040 %                            ModelVar.ny                =     number of outputs
0041 %                            ModelVar.na                =    order polynomial A
0042 %                            ModelVar.nb                =     order matrix polynomial B
0043 %                            ModelVar.nig            =    order vector polynomial Ig
0044 %
0045 %
0046 % Copyright (c) Rik Pintelon, Vrije Universiteit Brussel - dept. ELEC, November 2009
0047 % All rights reserved.
0048 % Software can be used freely for non-commercial applications only.
0049 %
0050 
0051 nu = ModelVar.nu;
0052 ny = ModelVar.ny;
0053 
0054 
0055 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0056 % constraint on plant model parameters %
0057 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0058 
0059 if ModelVar.RecipPlant
0060     for jj = 1:nu                            % column index
0061         for ii = 1+jj:ny                    % row index
0062             lji = jj + ny*(ii-1);            % block position coefficients b(jj,ii) polynomial
0063             % reciprocity plant model
0064             if lji <= nu*ny                    % test for rectangular matrices
0065                 Theta.B(jj,ii,:) = Theta.B(ii,jj,:);
0066             end % if
0067         end % ii
0068     end % jj
0069 end % if symmetric B
0070 
0071 NormPlant = norm([Theta.A.'; Theta.B(:); Theta.Ig(:)]);
0072 Theta.A = Theta.A/NormPlant;
0073 Theta.B = Theta.B/NormPlant;
0074 Theta.Ig = Theta.Ig/NormPlant;
0075

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