Contents
Example 24: Identification with tensor nuclear norms
based on the paper of B. Gunes, JW. van Wingerden and M. Verhaegen 2016
"A tensor perspective on LPV subspace identification"
clear; close all; clc;
Simulation settings
sim_case = 'Case1';
scheduling_option = 20;
SNR = 0.8;
N = 100;
seed = 1;
Estimator settings
past_window = 4;
regularization_window = 2;
lambda = 0.2;
pbreg = 'tikh';
pbregopt = 'gcv';
Generate data
[NZ, mymu, mymu_val, M, t, u, u_val, y, Y, inputs, m, n, outputs] ...
= generate_data_ex24(sim_case, seed, N, past_window ,SNR, scheduling_option, 0);
yu = sim(M,u',t,mymu(:,2:size(mymu,2)));
yuv = sim(M,u_val',t,mymu_val(:,2:size(mymu_val,2)));
Run state-of-the-art method and present Variance Accounted For
[~,X_pb] = lordvarx(u,y,mymu,past_window,past_window,pbreg,pbregopt,[0 0 0],1);
X_pb = lmodx(X_pb,n);
[A_pb,B_pb,C_pb,K_pb] = lx2abck(X_pb,u,y,mymu,past_window,past_window,[0 0 0]);
M_pb = idafflpv(A_pb,B_pb,C_pb,zeros(outputs,m*inputs),K_pb,zeros(n,1),1);
y_pb = sim(M_pb,u',t,mymu(:,2:size(mymu,2)));
y_pb_val = sim(M_pb,u_val',t,mymu_val(:,2:size(mymu_val,2)));
identification_vaf_pbr = vaf(yu,y_pb)
validation_vaf_pbr = vaf(yuv,y_pb_val)
identification_vaf_pbr =
81.4334
validation_vaf_pbr =
76.1554
Run proposed method and present Variance Accounted For
M_tnn = ex24algorithm(u,y,mymu,m,n,past_window,past_window,inputs,outputs,lambda,NZ,Y,regularization_window);
y_tnn = sim(M_tnn,u',1:max(size(u)),mymu(:,2:size(mymu,2)));
y_tnn_val = sim(M_tnn,u_val',1:max(size(u_val)),mymu_val(:,2:size(mymu_val,2)));
identification_vaf_tnn = vaf(yu,y_tnn)
validation_vaf_tnn = vaf(yuv,y_tnn_val)
identification_vaf_tnn =
88.9602
validation_vaf_tnn =
86.4356