TheTheta = MIMO_ML_DeNormalise(TheTheta, Thewscale, TheModelVar); Output parameters TheTheta = see input parameters Input parameters TheTheta = plant, noise, and initial conditions parameters structure with fields 'A', 'B', 'Ig' TheTheta = struct('A',[],'B',[], 'Ig', []) TheTheta.A = 1 x (OrderA+1) TheTheta.A(r) = coefficient a(r-1) of Omega^(r-1) TheTheta.B = ny x nu x (OrderB+1) TheTheta.B(i,j,r) = coefficient b(i,j,r-1) of Omega^(r-1) TheTheta.Ig = ny x (OrderIg+1) TheTheta.Ig(i,r) = coefficient ig(i,r-1) of Omega^(r-1) Note: all coefficients (except those for which Sel = 0) are free during the minimization + in each iteration step the following constraints are imposed: norm([a, vec(b), vec(ig)] = 1 Thewscale = angular frequency scaling TheModelVar = contains the information about the model to be identified structure with fields 'Transient', 'ThePlane', 'Reciprocal' TheModelVar = struct('Transient', [], 'PlantPlane', [], 'Struct', [], 'Reciprocal',[]) TheModelVar.Transient = 1 then the initial conditions of the plant and/or noise are estimated TheModelVar.PlantPlane = plane of the plant model 's': continuous-time; 'w': sqrt(s)-domain 'z': discrete-time; '': plane not defined TheModelVar.Struct = model structure 'EIV': errors-in-variables (noisy input-output data) 'OE': generalised output error (known input, noisy output) TheModelVar.Reciprocal = 1 if plant and noise models are reciprocal: G(i,j) = G(j,i) TheModelVar.nu = number of inputs TheModelVar.ny = number of outputs TheModelVar.na = order polynomial A TheModelVar.nb = order ny x nu matrix polynomial B TheModelVar.nig = order ny x 1 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.
0001 function TheTheta = MIMO_ML_DeNormalise(TheTheta, Thewscale, TheModelVar); 0002 % 0003 % TheTheta = MIMO_ML_DeNormalise(TheTheta, Thewscale, TheModelVar); 0004 % 0005 % Output parameters 0006 % TheTheta = see input parameters 0007 % 0008 % Input parameters 0009 % TheTheta = plant, noise, and initial conditions parameters 0010 % structure with fields 'A', 'B', 'Ig' 0011 % TheTheta = struct('A',[],'B',[], 'Ig', []) 0012 % TheTheta.A = 1 x (OrderA+1) 0013 % TheTheta.A(r) = coefficient a(r-1) of Omega^(r-1) 0014 % TheTheta.B = ny x nu x (OrderB+1) 0015 % TheTheta.B(i,j,r) = coefficient b(i,j,r-1) of Omega^(r-1) 0016 % TheTheta.Ig = ny x (OrderIg+1) 0017 % TheTheta.Ig(i,r) = coefficient ig(i,r-1) of Omega^(r-1) 0018 % Note: all coefficients (except those for which Sel = 0) are free 0019 % during the minimization + in each iteration step the following 0020 % constraints are imposed: 0021 % norm([a, vec(b), vec(ig)] = 1 0022 % 0023 % Thewscale = angular frequency scaling 0024 % 0025 % TheModelVar = contains the information about the model to be identified 0026 % structure with fields 'Transient', 'ThePlane', 'Reciprocal' 0027 % TheModelVar = struct('Transient', [], 'PlantPlane', [], 'Struct', [], 'Reciprocal',[]) 0028 % TheModelVar.Transient = 1 then the initial conditions of the plant and/or noise are estimated 0029 % TheModelVar.PlantPlane = plane of the plant model 0030 % 's': continuous-time; 0031 % 'w': sqrt(s)-domain 0032 % 'z': discrete-time; 0033 % '': plane not defined 0034 % TheModelVar.Struct = model structure 0035 % 'EIV': errors-in-variables (noisy input-output data) 0036 % 'OE': generalised output error (known input, noisy output) 0037 % TheModelVar.Reciprocal = 1 if plant and noise models are reciprocal: G(i,j) = G(j,i) 0038 % TheModelVar.nu = number of inputs 0039 % TheModelVar.ny = number of outputs 0040 % TheModelVar.na = order polynomial A 0041 % TheModelVar.nb = order ny x nu matrix polynomial B 0042 % TheModelVar.nig = order ny x 1 vector polynomial Ig 0043 % 0044 % 0045 % Copyright (c) Rik Pintelon, Vrije Universiteit Brussel - dept. ELEC, November 2009 0046 % All rights reserved. 0047 % Software can be used freely for non-commercial applications only. 0048 % 0049 0050 0051 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0052 % denormalisation plant model parameters % 0053 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0054 0055 if ~strcmp(TheModelVar.PlantPlane,'z') 0056 0057 na = TheModelVar.na; 0058 nb = TheModelVar.nb; 0059 nig = TheModelVar.nig; 0060 nmax = max([na, nb, nig]); 0061 TheScale = zeros(1,1,nmax+1); 0062 for ii = 0:nmax 0063 TheScale(1,1,ii+1) = Thewscale^ii; 0064 end 0065 0066 % polynomial A 0067 TheTheta.A = TheTheta.A./(squeeze(TheScale(1,1,1:na+1)).'); 0068 0069 % ny x nu matrix polynomial B 0070 nu = TheModelVar.nu; 0071 ny = TheModelVar.ny; 0072 TheTheta.B = TheTheta.B./repmat(TheScale(1,1,1:nb+1),[ny, nu, 1]); 0073 0074 % ny x 1 vector polynomial Ig 0075 if TheModelVar.Transient 0076 TheTheta.Ig = TheTheta.Ig./repmat(squeeze(TheScale(1,1,1:nig+1)).',[ny, 1]); 0077 end % if transient 0078 0079 end % if not z-domain 0080