State-Space Model Estimation with Data: Issue with Free/Fixed parameters of model
    4 views (last 30 days)
  
       Show older comments
    
Hello, I would like to estimate several (noise) parameters of a given model. I assume (and would like to fix it for the time being to be):
A = [ 1 0 1 0; 0 1 0 1; 0 0 1 0 ; 0 0 0 1];
B = [];
C = [eye(2), zeros(2, 2)];
D = [];
K = [zeros(2, 2); ones(2, 2)];
In order to use ssest later, I also set the following values:
x0 = zeros(4,1);
Ts = -1;
K( K == 1) = nan; % mark values as unknown w.r.t. to initial values
init_sys = idss(A,B,C,D,K,x0,Ts);
As I want to estimate the parameters in K, I fixed the others as follows:
init_sys.Structure.K.Free = K ~= 0;
init_sys.Structure.C.Free = false(size(C)); 
init_sys.Structure.A.Free = false(size(A));
Moreover, I set :
init_sys.InitialState = 'estimate';
opt = ssestOptions;
opt.SearchOption.MaxIter = 100;
and then run
system = ssest(data,init_sys,opt)
which gives me
K>> system
system =
  Discrete-time identified state-space model:
    x(t+Ts) = A x(t) + K e(t)
       y(t) = C x(t) + e(t)
    A = 
               x1        x2        x3        x4
     x1    0.9014  -0.03647  -0.03479  0.005559
     x2     0.184     1.073    0.2387    0.1506
     x3    0.0393   -0.1373    0.8788   -0.3308
     x4  -0.06804   -0.2545    0.2784    0.6195
    C = 
             x1      x2      x3      x4
     y1     301   18.76   6.241  -2.569
     y2  -34.73    17.9   2.136   1.577
    K = 
               y1        y2
     x1  0.005925  -0.00643
     x2  0.002105   0.06914
     x3   0.02819   0.08107
     x4    0.1748    0.4147
Sample time: 1 seconds
Parameterization:
   STRUCTURED form (some fixed coefficients in  A, B, C).
   Number of free coefficients: 4
   Use "idssdata", "getpvec", "getcov" for parameters and their uncertainties.
Status:                                                  
Estimated using SSEST on time domain data "data".        
Fit to estimation data: [93.36;92.87]% (prediction focus)
FPE: 2.099, MSE: 8.258
Why I does ssest also modify/estimate new parameters for the matrices A, C ? And how can I changes this / What am I doing wrong ?
Edit: When I understood it correctly, ssest transforms the input system to another representation and performs the estimation of the noise and K using it. Is there a way to prevent this (or to transform it again into the original form)?
Contrary to what is written in the documentation to ssest fixing the form to some canonical representation fails:
>> system = ssest(data,init_sys,'Form','modal',opt)
Error using ssest (line 132)
No property of the class "idss" matches the identifier "Form". Use PROPERTIES to get the list of properties for this class.
1 Comment
  marcel hendrix
 on 27 Mar 2020
				It won't solve your problem, but shouldn't that be "opt.SearchOptions.MaxIterations = 100" ?
Answers (0)
See Also
Categories
				Find more on Linear Model Identification in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
