diff --git a/identificationScript.m b/identificationScript.m new file mode 100755 index 0000000..5afc9ad --- /dev/null +++ b/identificationScript.m @@ -0,0 +1,142 @@ +%% Initialisation +clc +clear all +close all +%load expe1.mat simout +%load expe2_multisine.mat +%load expe3_multisine.mat +%load expe4_multisine.mat +load expe5_multisine.mat + +%% Variables +N = 2^9; % Nombre +Te = 5e-2; % Temps d'échantillonage +fdeb = 0; % fréquence de début d'échantillonage +ffin = 4; % fréquence de fin d'éch. +BP = [fdeb, ffin]; % Bande passante +REV = false; % Si on passe de fdeb à ffin ou l'inverse (booléen) +SHOW = true; % Montre les résultats (graphes) du MLBS (booléen) + +%[u, t] = insapack.mlbs(N, Te, BP, REV, SHOW); +[u, t] = insapack.multisine(N, Te, BP, false,'all',REV, SHOW); +u = 4*u; +% var.time = t.'; +% var.signals.values=u.'; +% var.signals.dimensions= 1 ; +%% +% Muligens litt for hoey frekvens, den maa kanskje skrus litt ned. Deretter +% finner vi modell ved bruk av div. verktoey. + +% figure() +% hold on; +% plot(simout.time, simout.signals.values) +% plot(var.time, var.signals.values) + +%%% N4SID +tn = simout.time; % On enlève les dix primières valeurs +un = var.signals.values; % On enlève les dix primières valeurs +yn = simout.signals.values; % On enlève les dix primières valeurs +data = iddata(yn,un,Te); +ordre = 2; +sys = n4sid(data, ordre, 'Ts',Te); +y = lsim(ss(sys), un, tn); +H = tf(sys); +G = (H)/(1-H); +numG = G.Numerator; +denumG = G.Denominator; + + +%%% Freq +[f0,U0,Y0,G0,sigU2,sigY2,sigUY2,sigG2,b,rho] = insapack.non_param_freq(un,yn,Te); +w0 = 2*pi*f0; + +%%% Identification via N4SID in frequency-domain +data = iddata(Y0,U0,Te,'Frequency',w0); %Ici peut-etre changer avec f0, comme ça il marche très mieux avec Loewner +Hn4sid_fd = n4sid(data,ordre); +y2 = lsim(ss(Hn4sid_fd), un, tn); + +%%% Identification via Loewner +wid = 2*pi*f0(f0