State-Space Model Estimation with Data: Issue with Free/Fixed parameters of model

1 view (last 30 days)
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.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!